c# – 在接口级别强制执行getter setter访问

我想在接口级别对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.但是,您必须在您创建的每个类上列出两个接口.

点赞