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; }