Ich habe ein Objekt eines bestimmten Typs (SpecialImage
), der einen impliziten Operator zu einem anderen Typ (Image
) implementiert.Kann eine Umwandlung in PropertyInfo.PropertyType getestet werden, wenn das Objekt den impliziten Operator implementiert?
does nicht abgeleitet von Image
. Jedoch ist folgendes möglich durch den Betreiber:
var someImage = new Image();
(SpecialImage)someImage;
Ich habe ein Objekt mit Eigenschaften, die ich durch Reflexion Schleifen bin und ein Image
Objekt:
Ist es möglich, zu überprüfen, ob das Objekt gießbar ist zu info.PropertyType
vor dem Versuch, den Wert zu setzen?
var someImage = new Image();
foreach(PropertyInfo info in someOjbect.GetType().GetProperties()) {
//info.PropertyType == typeof(SomeImage);
//Is it possible to check if the object is castable to
//info.PropertyType before trying to set the value?
info.SetValue(someObject, someImage, null);
}
Ich fand dies und in der Tat das funktioniert nutzen könnten. Gibt es keinen schöneren Weg, ohne die Klasse zu ändern und zum Beispiel IConvertible zu konvertieren? – Ropstah
Nicht, dass ich weiß. Sie könnten diesen Code in eine Hilfsmethode einbetten, um sie zu entfernen. Siehe http://stackoverflow.com/questions/2075471/implicit-version-of-isassignablefrom und http://stackoverflow.com/questions/2224266/how-to-tell-if-type-a-isimplicitly-convertible -to-type-b für weitere Informationen. – Phil