Ich habe eine Klasse, die ich als Deskriptor für ein Objekt verwende. In diesem Deskriptor gibt es mehrere Type
Referenzen für Klassen, die für verschiedene Operationen mit diesem Objekt instanziiert werden sollen. Ich dachte daran, diese Referenzen herauszuziehen und sie durch Attribute der Deskriptorklasse zu ersetzen.Inelegant/falsche Verwendung von Attributen?
Daraus:
class MyDescriptor : BaseDescriptor {
public Type Op1Type { get; }
public Type Op2Type { get; }
}
Um dies:
[Op1(typeof(foo))]
[Op2(typeof(bar))]
class MyDescriptor : BaseDescriptor {
}
ich Attribute verwenden, sehr selten. Wäre das ein schlechter Gebrauch von ihnen?
Haben Sie darüber nachgedacht, stattdessen Generics zu verwenden? – Lazarus
Ein Problem besteht darin, dass Sie die Anforderung erstellen, den Typ zur Kompilierungszeit in der öffentlichen Schnittstelle zu kennen, wenn Sie Attribute verwenden. Die Verwendung virtueller Methoden ermöglicht die Verwendung von Typen, die bei der Kompilierung nicht bekannt sind. – CodesInChaos
Die abgeleiteten Klassen können unterschiedliche Anzahlen von Operationen haben, so dass ich keine statische Anzahl generischer Parameter hätte. – redman