考虑以下界面:
interface IToto
{
string Name {get;}
}
使用代码约定,如何确保Name属性值永远不会改变?
我尝试在Contract.OldValue
标记的方法中使用ContractInvariantMethod
,但显然不支持。还有什么我能做的吗?
答案 0 :(得分:1)
仅使用接口是不可能的。但是,您可以使用具有抽象类的接口来获取所需内容。抽象类允许您定义功能,但您无法实例化它。因此,在真正的类中,您可以从抽象类继承,并自动获得定义的功能。
看看这个:
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
答案 1 :(得分:0)
找到我的答案here。代码合同尚未支持它。