私はいくつかのコードを持っています....ローカル変数を型として使う方法は?コンパイラは「変数ですが型のように使用されています」
ランタイム環境では、どのような型がv1変数であるのかわかりません! この理由から、if else文を何度も書く必要があります!
if (v1 is ShellProperty<int?>)
{
v2 = (v1 as ShellProperty<int?>).Value;
}
else if (v1 is ShellProperty<uint?>)
{
v2 = (v1 as ShellProperty<uint?>).Value;
}
else if (v1 is ShellProperty<string>)
{
v2 = (v1 as ShellProperty<string>).Value;
}
else if (v1 is ShellProperty<object>)
{
v2 = (v1 as ShellProperty<object>).Value;
}
4回書きました!違いはわずかShellProperty <するANYTYPEである>
ので、代わりのこのを使用して行をたくさん書いて「もしelse文」私は、実行時にプロパティタイプを取得するために使用リフレクションを使用することにしました
!
Type t1 = v1.GetType().GetProperty("Value").PropertyType;
dynamic v2 = (v1 as ShellProperty<t1>).Value;
このコードは、PropertyTypeは一種のはV1で、割り当てうまくLOローカル変数t1のあるものを手に入れることができます。
しかし
私のコンパイラは「T1は可変であるが、タイプのように使用される」と述べていることの後にそう、それは私がShellProperty <>
内のT1を書くことはできません。この問題を解決する方法を教えてとどのようにしてください私は持っているよりもコンパクトなコードを取得するには?
新しいクラスを作成する必要はありますか?
このようにジェネリックは使用できません。 Genericsはコンパイル時に強く型付けされます。 –
だから、これは静的にこれが好きではないことを意味します。 – IremadzeArchil19910311
すでにダイナミックに作業しています。 –