0

次のコードがあるとします。

var property = typeof(TEntity).GetProperty("Id");
var temp = (property.PropertyType)id;

VS は 2 行目の「プロパティ」に下線を付け、型または名前空間が見つからないことを通知します。なんで?上部の有無にかかわらず試してみましたusing System.Reflectionが、同じ結果が得られました。

を使用して回避できましたConvert.ChangeType(id, property.PropertyType)が、以前のコードが無効になる C# 仕様についてはどうなのか気になります。

4

2 に答える 2

1

実行時にのみ認識されるものを介してキャストしようとしています。C#はそのようには機能しません。キャストの型部分は「Type参照に評価される式」ではなく、型または型パラメーターの名前です

ここで何を達成しようとしているのかは明確ではありませんが、そのようなキャストでは実現できません。コンパイル時のタイプは何だと思いますtempか?varこれは、動的型付けではなく、コンパイル時の型推論にすぎないことをご存知ですか?

あなたが達成しようとしていることについてのより多くの情報を私たちに与えることができれば、私たちはあなたをもっと助けることができるかもしれません。

于 2012-05-22T15:17:27.480 に答える
0

括弧の間に型(型の変数ではSystem.Typeなく実際の型)が必要ですが、そのような型(property.PropertyType)は存在しません。これを証明するには、これをコードに追加します。

public class property
{
    public class PropertyType
    {

    }
}

これでコンパイラは満足しますが、これはおそらくあなたがやりたいことではありません。

于 2012-05-22T15:17:35.353 に答える