我想在接口级别对getter或setter强制访问属性,以便在实现它的类中遵循相同的访问权限.我想做类似下面的事情:
public interface IExample
{
string Name
{
get;
internal set;
}
}
public class Example : IExample
{
private string _name = String.Empty;
string Name
{
get
{
return _name;
}
internal set
{
_name = value;
}
}
}
但不幸的是,据我所知,C#中不允许这样做.我认为这是因为界面只是为了揭示公共访问的内容(我没有丝毫想法!).
我需要的是一种使用任何其他编码模式(最好使用接口)来实现它的方法,这将有助于我对其所有实现的类中的属性的getter或setter强制执行特定访问.
我用Google搜索并试图通过MSDN文档,但没有运气!
最佳答案 无论如何在setter上使用internal是有点讨厌的,但是如果你真的想要这样做,你可以定义一个本身就是内部的第二个接口,并使Example在程序集内部.
public interface IExample
{
string Name
{
get;
}
}
internal interface IExampleInternal
{
string Name
{
set; get;
}
}
internal class Example : IExample, IExampleInternal
{
public string Name { get; set; } = string.Empty;
}
现在同一个程序集中的任何内容都可以使用IExampleInternal,外部只能查看IExample.但是,您必须在您创建的每个类上列出两个接口.