Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 确保接口只读属性不更改_.net_Code Contracts - Fatal编程技术网

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