在C#中的公共類中,是否有一種方法可以使字段/方法僅在同一程序集內的派生類中可訪問?只允許相同程序集中的派生類訪問字段/方法?
從我明白在C#protected internal
裝置相同protected
或internal
(即訪問派生類或來自相同組件類),這是不我的需要。
在C#中的公共類中,是否有一種方法可以使字段/方法僅在同一程序集內的派生類中可訪問?只允許相同程序集中的派生類訪問字段/方法?
從我明白在C#protected internal
裝置相同protected
或internal
(即訪問派生類或來自相同組件類),這是不我的需要。
您不能防止從外部裝配一個類從編譯到它的調用,但你可以把這個屬性的保護成員的強制異常在運行時如果他們發生:
[System.Security.Permissions.StrongNameIdentityPermission(
System.Security.Permissions.SecurityAction.LinkDemand,
PublicKey = "...<Your assembly's full public key>...")]
如果班級是internal
,則無法在組件外對其進行子類別劃分。使字段/方法protected
,你很好去。
如果此類必須爲public
,請在程序集中的任何位置使用internal
子類。
如果您將公共類的「內部」唯一字段/方法刪除到內部類中,該怎麼辦?然後,所有在該組件中的類可以從內部類派生:
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; }
}
C#不支持,根據[MSDN](http://msdn.microsoft.com/en-us/library/system .reflection.methodbase.isfamily和assembly.aspx):_具有此可見性的方法無法在Visual Basic或C#中定義 – 2012-07-01 08:00:23