Eine anwendungsspezifische Beispiel mein unmittelbares Problem zu veranschaulichen:Kann ich in C# einen Kopierkonstruktor erstellen, der von einer abgeleiteten Klasse kopiert?
ich einen Metadaten-Anbieter Klasse mit der folgenden (verkürzt) Schnittstelle:
public class CtsDataAnnotationsModelMetadataProvider : DataAnnotationsModelMetadataProvider
{
protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName)
{
var metadata = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);
return metadata;
}
}
Jetzt würde ich ModelMetadata
mit zusätzlichen Eigenschaften erweitern möchten, füllen diese und Rückkehr und Instanz von ExtendedModelMetadata
. Wie kann ich Eigenschaften, die der metadata
-Instanz von base.CreateMetadata
in meiner erweiterten Instanz zugewiesen sind, schön vermitteln? Was ich möchte, aber nicht habe, ist;
var metadata = (ExtendedModelMetadata)base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);
kann ich einen Konstruktor für ExtendedModelMetadata
erstellen, die einen ModelMetadata
Parameter für diese und ausdrücklich ordnet alle seine Eigenschaften zum Beispiel so aufgebaut, aber ich möchte eine allgemeinere und weniger hart codiert Ansatz nimmt. Was kann ich tun?
Ich weiß, dass dieser Beitrag ziemlich alt ist, aber ich war in einer ähnlichen Situation und fand eine Lösung für das, was Sie versuchten zu tun, überprüfen Sie die Antwort, wenn Sie neugierig sind: http://stackoverflow.com/questions/16627312/how-can-i-extend-dataannotationsmodelmetadata/16680163 # 16680163 – ppetrov