C# 没有Getter/Setter的反射?
如果我在课堂上声明以下内容:C# 没有Getter/Setter的反射?,c#,.net,reflection,properties,runtime,C#,.net,Reflection,Properties,Runtime,如果我在课堂上声明以下内容: private int? MyID = null; 然后尝试通过反射访问它,它将无法找到它。我的意思是,下面将gProp设置为null: gType = refObj.GetType(); gProp = gType.GetProperty(PropertyName, System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflectio
private int? MyID = null;
然后尝试通过反射访问它,它将无法找到它。我的意思是,下面将gProp设置为null:
gType = refObj.GetType();
gProp = gType.GetProperty(PropertyName, System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
但是,如果我将其声明为:
private int? MyID { get; set; }
这对我来说一点也不奇怪,因为我已经知道这是事实。但是我想确认一下,;有没有办法让第一个声明与反射一起工作,或者我是否提供了一个Getter/Setter来让反射工作
谢谢 它是一个字段,不是属性,因此
GetProperty
不会返回它。您需要使用GetField
方法。它是一个字段,而不是属性,因此GetProperty
不会返回它。您需要使用GetField
方法。字段需要GetField
方法(而不是GetProperty
)
Type.GetFields方法
使用指定的绑定约束搜索指定的字段
样品
更多信息
GetField
方法(而不是GetProperty
)
Type.GetFields方法
使用指定的绑定约束搜索指定的字段
样品
更多信息
private int? MyID { get { return _myID;} }
下面的代码可以工作,因为它在c中是自动属性#
请参阅您应该创建一个属性来访问类中的变量。因此,您可以手动创建一个属性,如
private int? MyID { get { return _myID;} }
下面的代码可以工作,因为它在c中是自动属性#
请参阅以下内容
private int? MyID = null;
及
第一个是a,第二个是a
尝试通过反射查找字段时,应使用此方法。这两种方法之间存在差异
private int? MyID = null;
及
第一个是a,第二个是a
当试图通过反射查找字段时,应该使用该方法。我的逻辑说明第一个是一个简单变量,第二个是一个属性,因为它具有get/set,所以要使“GetProperty”起作用,它必须是一个属性。如果你想要一个变量,你需要一个GetField,我的逻辑说明第一个是一个简单的变量,第二个是一个属性,因为它有get/set,所以要让“GetProperty”起作用,它必须是一个属性。如果你想要一个变量,你需要GetField,这就是我想要的!我希望那是存在的。谢谢大家。这就是我要找的!我希望那是存在的。谢谢大家,谢谢你们的例子。我使用的是PropertyInfo,因为我以前调用过GetProperty,所以它很有用。很高兴能提供帮助!祝您有个美好的一天!谢谢你的例子。我使用的是PropertyInfo,因为我以前调用过GetProperty,所以它很有用。很高兴能提供帮助!祝您有个美好的一天!
private int? MyID { get; set; }