2009-12-20 3 views
53

Ich würde gerne wissen, wenn ich benutzerdefinierte Baugruppenattribute definieren kann. Bestehende Attribute sind in der folgenden Weise definiert:Benutzerdefinierte Assembly-Attribute

[assembly: AssemblyTitle("MyApplication")] 
[assembly: AssemblyDescription("This application is a sample application.")] 
[assembly: AssemblyCopyright("Copyright © MyCompany 2009")] 

Gibt es eine Möglichkeit ich folgendes tun:

[assembly: MyCustomAssemblyAttribute("Hello World! This is a custom attribute.")] 

Antwort

77

Ja, Sie können. Wir machen so etwas.

[AttributeUsage(AttributeTargets.Assembly)] 
public class MyCustomAttribute : Attribute { 
    string someText; 
    public MyCustomAttribute() : this(string.Empty) {} 
    public MyCustomAttribute(string txt) { someText = txt; } 
    ... 
} 

Um zu lesen, verwenden Sie diese Art von linq stmt.

var attributes = assembly 
    .GetCustomAttributes(typeof(MyCustomAttribute), false) 
    .Cast<MyCustomAttribute>(); 
8

Ja, verwenden AttributeTargets.Assembly:

[AttributeUsage(AttributeTargets.Assembly)] 
public class AssemblyAttribute : Attribute { ... }