setter,用于未在接口中定义的属性

Vol*_*zun 2 c# interface

如果我的界面只有getter的签名,例如:

public interface IInterface 
{
   object Id{get;}
}
Run Code Online (Sandbox Code Playgroud)

因此,当我拥有该类时,接口仅在任何已实现的类上指定Id的公共getter:

public class Simple : IInterface
{
  object Id
  {
    get{return something;} 
    set{ do something else;}
  }
}
Run Code Online (Sandbox Code Playgroud)

由于未在接口中定义setter,编译器会抱怨setter.但是我并没有就限制器的接口合同做出任何规定; 为什么接口坚持派生类的setter?

Ree*_*sey 11

你只需要公开Id.例如,这编译好:

public interface IInterface
{
    object Id { get; }
}
public class Simple : IInterface
{
    private int something;
    public object Id
    {
        get { return something; }
        set{ something = (int)value;}
    }
}
Run Code Online (Sandbox Code Playgroud)