.net 确保接口只读属性不更改
考虑以下接口:.net 确保接口只读属性不更改,.net,code-contracts,.net,Code Contracts,考虑以下接口: interface IToto { string Name {get;} } 使用代码契约,如何确保Name属性值永远不会更改 我尝试在标记为contractVariantMethod的方法中使用Contract.OldValue,但似乎不受支持。还有什么我能做的吗?仅使用接口是不可能的。但是,您可以使用带有抽象类的接口来获得所需的内容。抽象类允许您定义功能,但不能实例化它。因此,在实际类中,您可以从抽象类继承,并自动获得定义的功能 看看这个: namespace Co
interface IToto
{
string Name {get;}
}
使用代码契约,如何确保Name属性值永远不会更改
我尝试在标记为
contractVariantMethod
的方法中使用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
}
}
然后:
这显示:Mystringvalue找到了我的答案。显然,代码契约还不支持它。不幸的是,我真的需要它来处理任何接口实现。不过,谢谢你的干预。
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var myObject = new MyThing();
Console.Write(myObject.Name);
}
}
}