标签: bindingflags

BindingFlags.IgnoreCase不适用于Type.GetProperty()?

想象一下以下内容

T型有一个现场公司.执行以下方法时,它完美地工作:

Type t = typeof(T);
t.GetProperty("Company")
Run Code Online (Sandbox Code Playgroud)

以下调用我得到了null

Type t = typeof(T);
t.GetProperty("company", BindingFlags.IgnoreCase)
Run Code Online (Sandbox Code Playgroud)

有人有个主意吗?

c# reflection getproperty bindingflags

163
推荐指数
3
解决办法
3万
查看次数

没有从GetType()获取字段.使用BindingFlag.Default获取GetFields

我正在使用Reflection类来获取某个对象中的所有字段.然而,我的问题是,当字段在普通类中时,它可以正常工作,例如:

class test
{
   string test1 = string.Empty;
   string test2 = string.Empty;
}
Run Code Online (Sandbox Code Playgroud)

在这里我得到test1和test2,我的问题是我使用抽象,因此结合了几个类.

我有类似的东西:

class test3 : test2
{
   string test4 = string.Empty;
   string test5 = string.Empty;
}

class test2 : test1
{
   string test2 = string.Empty;
   string test3 = string.Empty;
}
class test1
{
   string test0 = string.Empty;
   string test1 = string.Empty;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,我不会从中获取字段GetType().GetFields(BindingFlag.Default).

这些领域的每个人都有get; set;附属于它的财产.当我运行代码时,我将属性一直返回到test1但不是实际的字段.

这是我试图获取字段的代码:

FieldInfo[] fields = Obj.GetType().GetFields(BindingFlags.Default);
foreach (FieldInfo field in fields)
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

FieldInfo[] fields = Obj.GetType().GetFields(BindingFlags.Public 
                                             | BindingFlags.Instance 
                                             | …
Run Code Online (Sandbox Code Playgroud)

c# reflection bindingflags

25
推荐指数
1
解决办法
4万
查看次数

什么是BindingFlags.Default相当于?

我记得在某个地方阅读,当使用反射和重载GetMethod接受一个位掩码BindingFlags,BindingFlags.Default相当于BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance或某事.谁能告诉我具体包含哪些值BindingFlags.Default?在MSDN文档不说,我不能在任何地方找到答案.

c# reflection msdn bindingflags

14
推荐指数
2
解决办法
3166
查看次数

使用GetProperties方法时如何排除静态属性

我想知道当我使用GetProperties()提取特定类的所有属性时是否可以排除静态属性。我知道为此使用BindingFlags来过滤我需要的属性,但我真正想要的是我要排除静态属性。我尝试使用这样的东西:

typeof(<class>).GetProperties(!BindingFlags.Static);
Run Code Online (Sandbox Code Playgroud)

但我认为它不起作用,因为VS向我抛出了一些语法错误。这是我的类中带有属性的内容。

public class HospitalUploadDtl : Base.Tables
        {
            public HospitalUploadDtl() { }
            public HospitalUploadDtl(SqlDataReader reader)
            {
                ReadReader(reader);
            }
            #region Properties
            public long BatchDtlId { get; set; }
            public long BatchNumber { get; set; }
            public string HospitalCode { get; set; }
            public string HospitalName { get; set; }
            public string Address { get; set; }
            public string City { get; set; }
            public string Country { get; set; }
            public string ContractPerson { get; set; }
            public string ContactNo …
Run Code Online (Sandbox Code Playgroud)

c# reflection static properties bindingflags

1
推荐指数
1
解决办法
1251
查看次数

如何在C#中使用反射自定义方法列表

我正在使用反射来创建用户将在动态生成的菜单中使用的方法列表(我是统一的).我在用:

MethodInfo[] methodInfos =  myObject.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
Run Code Online (Sandbox Code Playgroud)

但并不是所有类的公共方法都应该出现在这个菜单中,所以我想知道,是否有一些标志可以用来标记我需要的方法?

然后使用这个"自定义标志"来通过反射来获取这些方法.谢谢 :).

c# reflection unity-container bindingflags

1
推荐指数
1
解决办法
640
查看次数