Frage

Ich habe eine Frage: Gibt es eine elegante Art und Weise von Attributen auf einem Referenzfeld zu bekommen. D. h.

public class C1: Base
{
    [MyAttribute]
    public string Field1;
}
public class Base
{
    private void Do(ref string field)
    {
          if (field has attributes)
              DoSomething();
    }
} 

Wie kann ich Attribut eines Feldes in dem Verfahren Do ()?

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Es gibt keine Möglichkeit, dass mit ref string field Unterschrift zu tun. Attribute werden angewandt, um Erklärungen (Felder, Klassen, Veranstaltungen etc.), nicht auf „Instanzen“.

Was Sie können zu tun, ist Ihre Methode wie folgt ändern:

private void Do(Type fieldContainingType, string fieldName, ref string field)

und dann fieldContainingType Verwendung Reflexion zu untersuchen, um zu sehen, welche Attribute werden auf Feld mit dem Namen fieldName angewandt. Dieser Ansatz ist jedoch äußerst fragil und in der Regel sehr schlecht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top