我已經定義了一個彙編級屬性類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 { }
}
}
這一切工作正常。但如果我需要以某種方式參考在MyClass
中定義的私人類Mystery
,該怎麼辦?這是可能嗎?試圖從頂級[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
,但我想確保我沒有錯過一些微妙之處。
這應該是'Bar + Baz',而不是'Bar.Baz',當然? –
斑點馬克!更新了答案 – MattDavey