カスタムアセンブリ属性を定義できるかどうか知りたいです。既存の属性は、次の方法で定義されます。
[Assembly: AssemblyTitle("MyApplication")]
[Assembly: AssemblyDescription("This application is a sample application.")]
[Assembly: AssemblyCopyright("Copyright © MyCompany 2009")]
次のことができる方法はありますか?
[Assembly: MyCustomAssemblyAttribute("Hello World! This is a custom attribute.")]
はい、できます。このようなことをします。
[AttributeUsage(AttributeTargets.Assembly)]
public class MyCustomAttribute : Attribute {
string someText;
public MyCustomAttribute() : this(string.Empty) {}
public MyCustomAttribute(string txt) { someText = txt; }
...
}
読むには、この種のlinq stmtを使用します。
var attributes = Assembly
.GetCustomAttributes(typeof(MyCustomAttribute), false)
.Cast<MyCustomAttribute>();
はい、AttributeTargets.Assemblyを使用します。
[AttributeUsage(AttributeTargets.Assembly)]
public class AssemblyAttribute : Attribute { ... }