私は反射をしようとしている:なぜ私のC#反射コードがクラッシュするのですか?
using System;
using System.Collections.Generic;
using System.Reflection;
public class CTest {
public string test;
}
public class MyClass
{
public static void Main()
{
CTest cTest = new CTest();
Type t=cTest.GetType();
PropertyInfo p = t.GetProperty("test");
cTest.test = "hello";
//instruction below makes crash
string test = (string)p.GetValue(cTest,null);
Console.WriteLine(cTest.GetType().FullName);
Console.ReadLine();
}
}
:あなたは、通常は悪い考えである(クラスの外から)フィールドに触れて、いくつかの非常に具体的なことをやっている場合を除き'は'!= null'のために 'GetProperty()'のような呼び出しから戻り、それらのプロパティにアクセスしてメソッドを呼び出します。 ** A-L-W-A-Y-S ** –
アドバイスのための隠されていないビット:CTest変数の名前をcTest、_cTest、M_cTestに変更するか、好きなローカル変数の命名規則。 CTest.MyPropのような行が静的プロパティまたはインスタンスプロパティを参照しているかどうかを判断するのは難しいです。これは、バグを見つけるのが難しくなる原因になります。 – Dabblernl
OK Ctestをctestに変更しました – programmernovice