2010-11-24 22 views
1

在C#中的公共類中,是否有一種方法可以使字段/方法僅在同一程序集內的派生類中可訪問?只允許相同程序集中的派生類訪問字段/方法?

從我明白在C#protected internal裝置相同protectedinternal(即訪問派生類或來自相同組件類),這是不我的需要。

+0

C#不支持,根據[MSDN](http://msdn.microsoft.com/en-us/library/system .reflection.methodbase.isfamily和assembly.aspx):_具有此可見性的方法無法在Visual Basic或C#中定義 – 2012-07-01 08:00:23

回答

1

您不能防止從外部裝配一個類從編譯到它的調用,但你可以把這個屬性的保護成員的強制異常在運行時如果他們發生:

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

如果班級是internal,則無法在組件外對其進行子類別劃分。使字段/方法protected,你很好去。

如果此類必須爲public,請在程序集中的任何位置使用internal子類。

2

如果您將公共類的「內部」唯一字段/方法刪除到內部類中,該怎麼辦?然後,所有在該組件中的類可以從內部類派生:

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; } 
} 
相關問題