Ich habe ein seltsames Verhalten.Cast dynamisch durch externe statische Erweiterung Anruf bleibt dynamisch
Ich verwende die folgende Methode, um jedes Objekt auf einen beliebigen Typ zu übertragen.
using System.Dynamic;
...
/// <summary>
/// Casts any object to passed type.
/// </summary>
/// <typeparam name="T">Wished type</typeparam>
/// <param name="obj">The object you want to be casted.</param>
public static T ToType<T>(this object obj) => (T)obj;
Zum Beispiel (Objekt dynamisch):
AnyLabel.Tag = new ExpandoObject();
AnyLabel.Tag.ToType<dynamic>().Item2 = new Form(); // works
nun folgende Situation (dynamisch typisierte Objekt):
// var is NOT from type form, why?:
var form = ToType<Form>(AnyLabel.Tag.ToType<dynamic>().Item2);
// the other way works like desired:
var form2 = ((Form)AnyLabel.Tag.ToType<dynamic>().Item2);
I kann auf keine Formulareigenschaften/Methoden zugreifen, die den c verwenden asting Erweiterung à la:
ToType<Form>(AnyLabel.Tag.ToType<dynamic>().Item2).Show();
Meine Frage ist, warum ist das erste var nicht vom Typ Form und verweigert ich den letzten Code Teil auszuführen?
Ihr Code konnte nicht kompiliert werden. Bitte senden Sie den kompilierbaren Code. –
Verzeihung. Bearbeitet. – Bagerfahrer
Warum definieren Sie eine Erweiterungsmethode, wenn Sie sie nicht als Erweiterungsmethode verwenden? – oerkelens