reflection / TypeCast

07/03/2010 - 09:53 von Rainer | Report spam
Hallo NG,

wie bekomme ich einen Typcast hin, wenn ich den Type nur zur laufzeit
via reflection erfragen kann?

object val = this.xls.GetCellValue(row, col);

"val" muss in meinem auf den Typ gecastet werden, den ich zuvor über ein
PropertyInfo "pi" ermittlet habe.

So geht es jedenfalls nicht:
object val = (pi.PropertyType)this.xls.GetCellValue(row, col);

Danke für Hilfe und Hints.

Gruß
Rainer
 

Lesen sie die antworten

#1 Frank Dzaebel
07/03/2010 - 10:56 | Warnen spam
Hallo Rainer,

wie bekomme ich einen Typcast hin, wenn ich den Type nur zur laufzeit
via reflection erfragen kann?



Du brauchst dann ja normal nicht zu casten, da
du Methoden/Member-Aufrufe ja dann über InvokeMember
o.à. ausführst, und das kannst Du dann über die object-Instanz
(ohne Cast) machen. Ein Beispiel:

[Spàte Bindung bei C# am Beispiel Word]
http://dzaebel.net/LatebindWord.htm

___________

In einigen Fàllen könnte vielleicht noch so etwas
möglich sein:

{
// [...]
MethodInfo castMethod = this.GetType().GetMethod("Cast").
MakeGenericMethod(deinType);
object castedObject = castMethod.Invoke(null,
new object[] { deinWert });
}

public static T Cast<T>(object o) { return (T)o; }

oder andere Methoden:

[Convert.ChangeType-Methode (Object, Type) (System)]
http://msdn.microsoft.com/de-de/lib...69x08.aspx

[C# Dynamic Interface Type Casting - How to Do]
http://social.msdn.microsoft.com/Fo...1a7b042fb4

[Code Goes Here: Dynamic Cast in C#]
http://codegoeshere.blogspot.com/20...-in-c.html


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen