Attributparameter dynamisch ändern
In bestimmten Szenarien kann es vorkommen, dass Sie die Parameter eines Attributs zur Laufzeit ändern müssen. Normalerweise sind Attribute statisch und können nicht mehr geändert werden, nachdem sie auf eine Klasse oder Eigenschaft angewendet wurden. Es gibt jedoch eine Möglichkeit, diese Funktionalität durch Bearbeiten der Attributinstanz selbst zu erreichen.
Betrachten Sie die folgende UserInfo-Klasse, die von einem Drittanbieter bereitgestellt wird:
public class UserInfo { [Category("change me!")] public int Age { get; set; } [Category("change me!")] public string Name { get; set; } }
Trotz der Absicht, diese Kategorien zu ändern, ist dies aufgrund von Anbieterbeschränkungen nicht direkt möglich. Um dieses Problem zu umgehen, können Sie die folgende Technik verwenden:
CategoryAttribute[] attrs = (CategoryAttribute[]) typeof(UserInfo)</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">.GetProperty("Age").GetCustomAttributes(typeof(CategoryAttribute), false);
attrs[0].Category = "Meine neue Kategorie ";
Console.WriteLine(attrs[0].Category); // Gibt „Meine neue Kategorie“ aus
Durch direktes Bearbeiten der Attributinstanz können Sie den Wert ihres Parameters zur Laufzeit dynamisch ändern. Dadurch können Sie die Kategorienamen der Klasse UserInfo ändern, ohne den vom Anbieter bereitgestellten Originalcode zu ändern.
Das obige ist der detaillierte Inhalt vonWie kann ich Attributparameter zur Laufzeit dynamisch ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!