C#のパブリッククラスでは、同じアセンブリ内の派生クラスに対してのみフィールド/メソッドにアクセスできるようにする方法がありますか?私はC#でprotected internal
を理解して何からフィールド/メソッドは、同じアセンブリ内の派生クラスに対してのみアクセス可能にしますか?
は私が必要なものではない、(派生クラスと同じアセンブリからまたはクラスへのアクセスIE)protected
またはinternal
と同じ意味します。
C#のパブリッククラスでは、同じアセンブリ内の派生クラスに対してのみフィールド/メソッドにアクセスできるようにする方法がありますか?私はC#でprotected internal
を理解して何からフィールド/メソッドは、同じアセンブリ内の派生クラスに対してのみアクセス可能にしますか?
は私が必要なものではない、(派生クラスと同じアセンブリからまたはクラスへのアクセスIE)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; }
}
[MSDN](http://msdn.microsoft.com/en-us/library/system)によれば、C#はこれをサポートしていません。 .reflection.methodbase.isfamilyandassembly.aspx):Visual BasicまたはC#でこの可視性を持つ_Methodを定義することはできません。 –