私は奇妙な動作があります。外部静的拡張呼び出しを動的に入力して動的にキャストする
次のメソッドを使用して、オブジェクトを任意の型にキャストします。
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;
(動的にオブジェクト):
AnyLabel.Tag = new ExpandoObject();
AnyLabel.Tag.ToType<dynamic>().Item2 = new Form(); // works
ここで、次のような状況(型指定されたオブジェクトへの動的):
// 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 cを使用してフォームのプロパティ/メソッドにアクセスすることはできませんラàasting拡張子:
ToType<Form>(AnyLabel.Tag.ToType<dynamic>().Item2).Show();
私の質問は、なぜ最初のVaRはないタイプのフォームからのものであり、私に実行するための最後のコード部分を拒否していますか?
コードはコンパイルできませんでした。コンパイル可能なコードを投稿してください。 –
編集されました。 – Bagerfahrer
拡張メソッドを拡張メソッドとして使用しないときに、その拡張メソッドを定義するのはなぜですか? – oerkelens