考虑以下接口:
interface IToto
{
string Name {get;}
}
使用代码协定,如何确保 Name 属性值永远不会更改?
我尝试在 ContractInvariantMethod
标记的方法中使用 Contract.OldValue
,但似乎不支持它。我还能做什么吗?
仅使用接口是不可能的。但是,您可以使用带有抽象类的接口来获取所需的内容。抽象类允许您定义功能,但不能实例化它。因此,在实际类中,您可以从抽象类继承,并自动获得定义的功能。
看看这个:
namespace ConsoleApplication1
{
public interface IMyThing
{
string Name { get; }
}
public abstract class MyThingBase : IMyThing
{
public string Name {
get
{
return "Mystringvalue";
}
}
}
public class MyThing : MyThingBase
{
//stuff
}
}
然后:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var myObject = new MyThing();
Console.Write(myObject.Name);
}
}
}
这打印: Mystringvalue
在这里找到了我的答案。代码协定似乎还不支持它。