使只有同一组件内的派生类访问场/方法? [重复](Make field/method acces

2019-09-29 08:10发布

这个问题已经在这里有一个答案:

  • 如何使财产保护,并且在C#内部? 7个回答

在C#中的公共类是有办法让同一个组件内的场/只派生类的使用方法?

从我的理解protected internal在C#中的含义一样protected internal (即访问来自同一装配派生类类),这不是我所需要的。

Answer 1:

如果你删除的“内部”只有场/公众类的方法,以一个内部类。 然后,所有在组装类的可以从内部类派生:

public abstract class MyClass
{
    public string Name { get; set; }
}

// Only classes in this assembly can derive from this class
internal abstract class InternalClass : MyClass
{
    protected string Other { get; set; }
}


Answer 2:

您不能防止从外部装配一个类从编译到它的调用,但你可以强制异常在运行时,如果他们通过把这个属性的保护部件上做的发生:

   [System.Security.Permissions.StrongNameIdentityPermission(
    System.Security.Permissions.SecurityAction.LinkDemand, 
    PublicKey = "...<Your assembly's full public key>...")]


Answer 3:

如果类是internal ,不会有任何的方式来子分类的组件外部。 使字段/法protected ,你是好去。

如果类必须是public ,使用internal随处可见子类的组件中。



文章来源: Make field/method accessible only to derived classes within same assembly? [duplicate]