Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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
C# 使用接口添加私有setter_C#_.net - Fatal编程技术网

C# 使用接口添加私有setter

C# 使用接口添加私有setter,c#,.net,C#,.net,我有一个接口,它只有一个属性,如下所示 public interface IExtendable { Hashtable ExtendedProperties { get; set;} } 我希望setter是私有的,但它不允许,因为它来自一个接口,而且我知道其中的所有内容都应该是公共的 那么,什么是允许私人二传的最佳实践呢 在这种情况下不要使用接口还是什么 提前感谢,您不能将私有setter添加到接口。如果您想要一个私有setter,那么您的接口需要如下所示: public

我有一个接口,它只有一个属性,如下所示

public interface IExtendable
{
      Hashtable ExtendedProperties { get; set;}
}
我希望setter是私有的,但它不允许,因为它来自一个接口,而且我知道其中的所有内容都应该是公共的

那么,什么是允许私人二传的最佳实践呢

  • 在这种情况下不要使用接口还是什么

提前感谢,

您不能将私有setter添加到接口。如果您想要一个私有setter,那么您的接口需要如下所示:

public interface IExtendable 
{       
     Hashtable ExtendedProperties { get; } 
} 

在接口的实现中,您可以添加私有setter。

您可以使用抽象类。接口表示其他类使用的对象的公共API。使用者不关心类的私有方面,因此没有理由将其放在接口中。@Shaks抽象类仍然没有帮助,因为即使派生类也无法访问
private
成员,除非您将其设置为
受保护的
@MattDavey-没错。我的错(谢谢大家。我得到了答案,因为我猜+1外部世界不应该知道或关心类的私有实现细节。
private interface IExtendable
{
    Hashtable ExtendedProperties { get; }
}

private class Extendable: IExtendable
{
    Hashtable ExtendedProperties { get; private set; }
}