确保接口只读属性不会更改



考虑以下接口:

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

在这里找到了我的答案。代码协定似乎还不支持它。

相关内容

  • 没有找到相关文章

最新更新