该名称在当前上下文中不存在 invariant 方法

The name does not exist in the current context in invariant method

提问人: 提问时间:4/23/2019 更新时间:4/23/2019 访问量:211

问:

我正在尝试在停车场类中的程序中使用不变量(代码合约库),其中我的所有方法都已实现,但出现“该名称在当前上下文中不存在”。突出显示的词语似乎造成了问题。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);
        }
C# 代码协定 不变量

评论

1赞 Haytam 4/23/2019
他们在哪里宣布?
0赞 4/23/2019
@Haytam请参阅编辑后的代码。ObjectInvariat() 方法在 CarPark 类中实现

答:

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);
    }
}