在C#中,您可以使用System.Reflection查找没有getter的属性吗?
我尝试过使用不同的绑定标志,但似乎没有任何帮助。
此外,Stack Overflow上的其他问题/答案似乎并不适用,因为它们都使用getter(即{ get; }
)。如果您找到了您认为适用的并回答了这个问题,请提供链接。
using System;
using System.Reflection;
namespace PropertyInfoExample
{
public class SomeClass
{
public string PublicProperty; // <-- reflection won't show
public string PublicPropertyWithGetter { get; }
}
class Program
{
static void Main(string[] args)
{
SomeClass someObject = new SomeClass();
someObject.PublicProperty = "doesn't make a difference";
BindingFlags bindingFlags = BindingFlags.Public | BindingFlags.Instance;
PropertyInfo[] properties = someObject.GetType().GetProperties(bindingFlags);
foreach (PropertyInfo property in properties)
Console.WriteLine(property.Name);
}
}
}
输出:
PublicPropertyWithGetter
请注意上面列表中缺少“PublicProperty”。
目标.NET Framework:4.5.2
答案 0 :(得分:4)
这不是.NET所谓的&#34;属性&#34 ;;它是一个成员变量。在.NET中,我们称之为&#34;字段&#34;。
public string PublicProperty;
它只是一个变量。没有涉及代码。
A&#34;属性&#34;有get
和/或set
。
反射方面,您可以使用Type.GetFields()
BindingFlags bindingFlags = BindingFlags.Public | BindingFlags.Instance;
FieldInfo[] fields = someObject.GetType().GetFields(bindingFlags);
正如dasblinkenlight观察到的那样,没有吸气剂的&#34;属性&#34;当然可以存在,但它看起来像这样 - 这是我们大多数人认为你的意思,看到你的头衔:
public string PublicProperty {set {/* some code here */} }