提问人: 提问时间:4/23/2019 更新时间:4/23/2019 访问量:211
该名称在当前上下文中不存在 invariant 方法
The name does not exist in the current context in invariant method
问:
我正在尝试在停车场类中的程序中使用不变量(代码合约库),其中我的所有方法都已实现,但出现“该名称在当前上下文中不存在”。突出显示的词语似乎造成了问题。conferenceID 和 parkingID 来自两个不同的类,它们位于 CarPark 类之外。这是我到目前为止尝试过的。
class Program
{
public class Conferences
{
public int conferenceID { get; set; }
public Parking[] parkingArray { get; set; }
public DateTime DateTime { get; set; }
}
public class Parking
{
public int parkingID { get; set; }
public bool parkingIsReserved { get; set; }
public bool parkingIsPurchased { get; set; }
public bool parkingisReservedBy { get; set; }
public DateTime DateTime { get; set; }
}
[ContractInvariantMethod]
void ObjectInvariant()
{
Contract.Invariant(**conferenceID** >= 0 && conferenceID <= totalConferences);
Contract.Invariant(**parkingID** >= 0 && parking <= maxParkingSpaces);
Contract.Invariant(parkingID <= availableParkings);
}
答:
1赞
Haytam
4/23/2019
#1
您的合约不变量应与您要测试的字段位于同一类中,在您的示例中也是如此:Parking
public class Parking
{
public int parkingID { get; set; }
public bool parkingIsReserved { get; set; }
public bool parkingIsPurchased { get; set; }
public bool parkingisReservedBy { get; set; }
public DateTime DateTime { get; set; }
[ContractInvariantMethod]
void ObjectInvariant()
{
Contract.Invariant(**conferenceID** >= 0 && conferenceID <= totalConferences);
Contract.Invariant(**parkingID** >= 0 && parking <= maxParkingSpaces);
Contract.Invariant(parkingID <= availableParkings);
}
}
评论