Ich versuche, eine Methode zu schreiben, die alle Typen in einer Assembly mit einem bestimmten benutzerdefinierten Attribut findet. Ich muss auch in der Lage sein, einen String-Wert anzugeben, auf den abgestimmt werden kann. Der Vorbehalt ist, dass ich in der Lage sein möchte, dies in jeder Klasse auszuführen und jeden Wert zurückzugeben.Klassenattributwert dynamisch vom Typ
Zum Beispiel: Ich möchte einen Anruf auszuführen, wie dies
Type tTest = TypeFinder.GetTypesWithAttributeValue(Assembly.Load("MyAssembly"), typeof(DiagnosticTestAttribute), "TestName", "EmailTest");
Meine Methode so sieht weit wie folgt aus:
public static Type GetTypesWithAttributeValue(Assembly aAssembly, Type tAttribute, string sPropertyName, object oValue)
{
object oReturn = null;
foreach (Type type in aAssembly.GetTypes())
{
foreach (object oTemp in type.GetCustomAttributes(tAttribute, true))
{
//if the attribute we are looking for matches
//the value we are looking for, return the current type.
}
}
return typeof(string); //otherwise return a string type
}
Mein Attribut wie folgt aussieht:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
public class DiagnosticTestAttribute : Attribute
{
private string _sTestName = string.Empty;
public string TestName
{
get { return _sTestName; }
}
public DiagnosticTest(string sTestName)
{
_sTestName = sTestName;
}
}
Für diejenigen, die mit Ausdrücken vertraut sind, würde ich gerne in der Lage sein, einen Anruf li zu machen ke:
Wo der Ausdruck meinen generischen Typ verwendet, um die Eigenschaft auszuwählen, die ich suche.
Das funktionierte einwandfrei. Ich musste die Assembly wechseln, weil ich sie von einem anderen anrief, aber es funktioniert großartig. Vielen Dank. –
wenn ich dir mehr Cred geben könnte würde ich ;-) – Seabizkit