FooAttribute
次のようなアセンブリ レベルの属性クラスを定義しました。
namespace Bar
{
[System.AttributeUsage (System.AttributeTargets.Assembly, AllowMultiple=true)]
public sealed class FooAttribute : System.Attribute
{
public FooAttribute(string id, System.Type type)
{
// ...
}
}
}
これを使用して、IDをクラスに関連付けます。たとえば、次のようになります。
[assembly: Bar.Foo ("MyClass", typeof (Bar.MyClass))]
namespace Bar
{
public class MyClass
{
private class Mystery { }
}
}
これはすべてうまくいきます。Mystery
しかし、で定義されたプライベート クラスを参照する必要がある場合はどうすればよいMyClass
でしょうか。これはまったく可能ですか?[assembly: ...]
タイプが公開されていないため、トップレベルのディレクティブから参照しようとしても機能しません。
[assembly: Bar.Foo ("Mystery", typeof (Bar.MyClass.Mystery))] // won't work
そして、トップレベルで定義する必要があるように、[assembly: ...]
ディレクティブを入れてMyClass
見ることができるようにすることMystery
は合法ではありません:[assembly: ...]
namespace Bar
{
class MyClass
{
[assembly: FooAttribute (...)] // won't work either
...
}
}
ユーザーをアセンブリのフレンドinternal
として宣言することにより、アセンブリの外部から型にアクセスする方法がありますが、アセンブリ内のプライベート型を参照するにはどうすればよいでしょうか? それは不可能だと思います。その代わりに宣言する必要がありますが、微妙な点を見逃していないことを確認したいと思います。Mystery
internal