Hallo,<br>
der u.s. Code zeigt, wie ein Attribute an eine Klasse gebunden wird. <br>
<pre>
<font face="Verdana" size="1" color="#000000">using System;
namespace MyAttributes
{
[AttributeUsage(AttributeTargets.All)] // ist wohl das Attribute für DeveloperAttribute
public class DeveloperAttribute : Attribute
{
public string FName;
public string FAge;
public bool FReviewed;
public DeveloperAttribute(string name, string age, bool reviewed)
{
this.FName = name;
this.FAge = age;
this.FReviewed = reviewed;
}
public string Name
{
get {return FName;}
set {FName = value;}
}
public string Age
{
get {return FAge;}
set {FAge = value;}
}
public bool Reviewed
{
get {return FReviewed;}
set {FReviewed = value;}
}
}
[DeveloperAttribute("Jens Schumann", "37", true)] // binden des Attribute DeveloperAttribute an MainApp
class MainApp
{
public static void Main()
{
//Call function to get and display the attribute.
GetAttribute(typeof(MainApp));
}
public static void GetAttribute(Type t)
{
//Get instance of the attribute.
DeveloperAttribute MyAttribute = (DeveloperAttribute) Attribute.GetCustomAttribute(t, typeof (DeveloperAttribute));
if(null == MyAttribute)
{
Console.WriteLine("The attribute was not found.");
}
else
{
//Get the Name value.
Console.WriteLine("The Name Attribute is: {0}." , MyAttribute.Name);
//Get the Level value.
Console.WriteLine("The Age Attribute is: {0}." , MyAttribute.Age);
//Get the Reviewed value.
Console.WriteLine("The Reviewed Attribute is: {0}." , MyAttribute.Reviewed);
if (MyAttribute.Name=="Jens Schumann")
Console.WriteLine("Vom Autor gestartet");
}
}
}
}</font>
</pre>
Im SDK konnte ich leider nicht die Stelle finden, an der beschreiben wird, wie z.B. das DeveloperAttribute von außen geändert werden kann.<br>
Ich denke, dann wird die Sache doch erst richtig interessant. Wenn man mal davon absieht, das Attribute an Klassen, Methoden,<br>
Properties usw. gebunden werden können, wo ist dann eigentlich der große Unterschied zu den alten Ini-Dateien. Wenn ich nur<br>
durch ändern der Attribute (zur Laufzeit) das Verhalten der Anwendung ändern kann, dann kann ich doch Ini-Dateien verwenden, in denen in<br>
den entsprechenden Sections die Werte definiert werden. Oder habe ich jetzt etwas grundsätzlich mißverstanden?<br>
Jens Schumann<br>
der u.s. Code zeigt, wie ein Attribute an eine Klasse gebunden wird. <br>
<pre>
<font face="Verdana" size="1" color="#000000">using System;
namespace MyAttributes
{
[AttributeUsage(AttributeTargets.All)] // ist wohl das Attribute für DeveloperAttribute
public class DeveloperAttribute : Attribute
{
public string FName;
public string FAge;
public bool FReviewed;
public DeveloperAttribute(string name, string age, bool reviewed)
{
this.FName = name;
this.FAge = age;
this.FReviewed = reviewed;
}
public string Name
{
get {return FName;}
set {FName = value;}
}
public string Age
{
get {return FAge;}
set {FAge = value;}
}
public bool Reviewed
{
get {return FReviewed;}
set {FReviewed = value;}
}
}
[DeveloperAttribute("Jens Schumann", "37", true)] // binden des Attribute DeveloperAttribute an MainApp
class MainApp
{
public static void Main()
{
//Call function to get and display the attribute.
GetAttribute(typeof(MainApp));
}
public static void GetAttribute(Type t)
{
//Get instance of the attribute.
DeveloperAttribute MyAttribute = (DeveloperAttribute) Attribute.GetCustomAttribute(t, typeof (DeveloperAttribute));
if(null == MyAttribute)
{
Console.WriteLine("The attribute was not found.");
}
else
{
//Get the Name value.
Console.WriteLine("The Name Attribute is: {0}." , MyAttribute.Name);
//Get the Level value.
Console.WriteLine("The Age Attribute is: {0}." , MyAttribute.Age);
//Get the Reviewed value.
Console.WriteLine("The Reviewed Attribute is: {0}." , MyAttribute.Reviewed);
if (MyAttribute.Name=="Jens Schumann")
Console.WriteLine("Vom Autor gestartet");
}
}
}
}</font>
</pre>
Im SDK konnte ich leider nicht die Stelle finden, an der beschreiben wird, wie z.B. das DeveloperAttribute von außen geändert werden kann.<br>
Ich denke, dann wird die Sache doch erst richtig interessant. Wenn man mal davon absieht, das Attribute an Klassen, Methoden,<br>
Properties usw. gebunden werden können, wo ist dann eigentlich der große Unterschied zu den alten Ini-Dateien. Wenn ich nur<br>
durch ändern der Attribute (zur Laufzeit) das Verhalten der Anwendung ändern kann, dann kann ich doch Ini-Dateien verwenden, in denen in<br>
den entsprechenden Sections die Werte definiert werden. Oder habe ich jetzt etwas grundsätzlich mißverstanden?<br>
Jens Schumann<br>
Comment