.NET 通过反射获取私有属性

2024-03-20

我有以下场景

装配A

public abstract class MyBaseEntity        
{   
    //Uncompleted method     
    public void addChild<T>(T child)
    {            

        try
        {                
            Type tInfo = this.GetType();
            PropertyInfo pInfo = tInfo.GetProperties(BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance).Where(p => p.PropertyType == typeof(ISet<T>)).FirstOrDefault();                
            MethodInfo mInfo = tInfo.GetMethod("Add");
            mInfo.Invoke(this, new object[] {child});
        }
        catch (Exception ex)
        {               
            throw ex;
        }
    }

}

装配B

 public class MyModel : MyBaseEntity
{
    public virtual int p1 { get; set; }
    public virtual int p2 { get; set; }
    public virtual DateTime p3 { get; set; }
    public virtual bool p4 { get; set; }
    private readonly ISet<MyModelChild> _p5;
    private readonly ISet<MyModelChild2> _p6;
    public virtual string p7 { get; set; }

    public MyModel()
    {
        this._p5 = new HashSet<MyModelChild>();
        this._p6 = new HashSet<MyModelChild2>();
    }

    public virtual IEnumerable<MyModelChild> P5
    {
        get { return _p5; }
    }

    public virtual IEnumerable<MyModelChild2> P6
    {
        get { return _p6; }
    }
}    

在 MyBaseEntity 类中,我尝试获取私有 ISet 子级并调用方法“Add”。 我将“addChild”方法称为

myObject.addChild<MyModelChild>(child);

but the GetProperties方法不提取私有财产。它可以提取所有公共属性,但不能提取私有属性。

有人可以帮助我吗?

谢谢你!


您引用的两个私有是字段,而不是属性,自然您不会找到它们GetProperties http://msdn.microsoft.com/en-us/library/6kec8wwk.aspx(您可以使用GetFields http://msdn.microsoft.com/en-us/library/sa5z9w50.aspx为了那个原因)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET 通过反射获取私有属性 的相关文章

  • 非模板函数中的尾随返回类型[重复]

    这个问题在这里已经有答案了 我见过有人使用以下语法来实现函数 auto get next gt int 代替 int get next 我理解两者 并且我知道尾随返回类型语法对于使用 decltype 的模板代码很有用 就我个人而言 我会避
  • C++中类成员函数相互调用有什么好处?

    我是 C 新手 我发现下面的编程风格对我来说很有趣 我在这里写了一个简化版本 include
  • CMake(Ninja 后端)使用 /MT 编译

    我有一个类似的问题CMake 使用 MT 而不是 MD 进行编译 https stackoverflow com questions 14172856 cmake compile with mt instead of md但有一些差异 我正
  • 从结构调用 C++ 成员函数指针

    我找到了有关调用 C 成员函数指针和调用结构中的指针的信息 但我需要调用结构内部存在的成员函数指针 但我无法获得正确的语法 我在类 MyClass 的方法中有以下代码片段 void MyClass run struct int MyClas
  • 如何在 Scala 用户定义注释中使用命名参数?

    在下面的代码中 我能够获得第一个注释对象 Publishable 但不能获得第二个 第二个使用命名参数 它转换为 x 2 x 3 x 1 作为 AST 中的参数 我该如何正确地做到这一点 class Publishable val path
  • 如何在 Linux 上重新实现(或包装)系统调用函数?

    假设我想完全接管 open 系统调用 也许要包装实际的系统调用并执行一些日志记录 一种方法是使用 LD PRELOAD http scaryreasoner wordpress com 2007 11 17 using ld preload
  • 公交车公共交通算法

    我正在开发一个可以查找公交路线的离线 C 应用程序 我可以提取时间表 巴士 路线数据 我正在寻找适用于基本数据的最简单的解决方案 可以使用什么算法来查找从巴士站 A 到巴士站 B 的路线 是否有适用于 C Java 的开源解决方案 数据库的
  • 自己绘制的WPF自定义滑块

    这是我关于堆栈溢出的第一个问题 所以不要踢它 我在尝试创建 Mac 风格的滑块控件时遇到问题 我已经发现这个解决方案 http www codeproject com KB miscctrl MAC Slider aspx我已经在我的解决方
  • 注入包含接口的所有已注册实现的 Enumerable

    给出以下接口 public interface IMyProcessor void Process 我希望能够注册多个实现 并让我的 DI 容器将它们的可枚举注入到这样的类中 public class MyProcessorLibrary
  • DateTime.ParseExact - 为什么 yy 变成 2015 而不是 1915

    为什么 NET 假定以下年份是 2015 年 而不是 1915 年 var d DateTime ParseExact 20 11 15 dd MM yy new CultureInfo en GB 我想 它会尝试接近 但其背后是否有合理的
  • 当我尝试传递临时地址作为参数时,它是一个 UB 吗?

    对于以下 C 代码 include
  • fgets溢出后如何清除输入缓冲区?

    当输入字符串超出其预定义限制时 我遇到了 fgets 的小问题 以下面的例子为例 for index 0 index lt max index printf Enter the d string index 1 if fgets input
  • 为什么这个位图图像在加载后会改变大小?

    快速提问 我有这个1000 1000位图图像 我使用这个例程来加载它 private BitmapSource initialBitmap new BitmapImage new Uri C Users Desktop Original b
  • 如何在VS2005中使用从.bat而不是.exe启动的外部程序进行调试?

    在我的 c 项目的调试属性中 我选择了 启动外部程序 并选择了我希望将调试器附加到的程序的 exe 但是 现在我需要从 bat 文件而不是 exe 启动程序 但 VS2005 似乎不允许这样做 这可能吗 编辑 为了澄清 我需要调试从 bat
  • 使用未命名命名空间而不是静态命名空间

    我可以假设在未命名命名空间中声明的对象相当于static namespace int x 1 static int x 2 FWIK 在这两种情况下 x将具有静态存储期限和内部链接 声明为的对象的所有规则也是如此static适用于未命名名称
  • 让 Windows 尝试读取文件

    我正在对 Windows 文件系统进行某种封装 当用户请求打开文件时 Windows 调用我的驱动程序来提供数据 在正常操作中 驱动程序返回缓存的文件内容 但是 在某些情况下 实际文件没有缓存 我需要从网络下载它 问题是是否有可能让 Win
  • 为什么我可以在另一个函数中定义一个函数?

    请参阅下面的代码 我在另一个函数中定义了一个函数 void test1 void void test2 void printf test2 n printf test1 n int main void test1 return 0 这个用法
  • 为什么存在系统调用

    我一直在阅读有关系统调用及其在 Linux 中如何工作的内容 我还有更多的阅读要做 但我读过的一件事都没有回答 那就是 为什么我们需要系统调用 我知道系统调用是用户空间程序要求内核执行某些操作的请求 但我的问题基本上是 为什么用户空间程序本
  • C++ 中的析构函数

    我的 AB h 文件中有一个构造函数 class AB private int i public AB i 0 constructor AB i 0 destructor virtual void methodA unsigned int
  • 如何将模型绑定到动态创建的类 nancyfx

    首先感谢任何愿意查看我的问题的人 我对 Nancyfx 还很陌生 在尝试将 JSON 有效负载绑定到动态创建的类时遇到问题 我按照这篇文章中的代码动态创建了该类 在C 中动态创建一个类 https stackoverflow com que

随机推荐

  • 如何在 XSL 中“重用”代码

    我正在使用 XSLT 节点 我的问题是关于 XSL 的 我在互联网上进行了搜索 但我只找到了有关 XML 处理的信息以将其显示在网页上 我正在搜索的信息是如何在这种情况下 重用 某些代码 我的 XSL 是
  • jQuery colorbox onclose 更新父级

    可以为你们提供一些帮助 所以我使用 jQuery colorbox 并通过单击链接激活它 在颜色框中有一个带有一些复选框的表单 我想做的是在单击提交时将所选复选框的所有值获取到父级 并随后关闭颜色框 我不想刷新父窗口 它应该自动用内容填充
  • 警告:mysqli_connect():(HY000/1045):用户“用户名”@“localhost”的访问被拒绝(使用密码:YES)

    警告 mysqli connect HY000 1045 第 6 行 C Users xampp htdocs PHP Login Script config php 中的用户 用户名 localhost 使用密码 YES 访问被拒绝 即使
  • 名称 虚伪列表

    有人知道虚伪姓名的公开列表吗 名字的缩写形式 例如安东尼的托尼 罗斯玛丽的罗西或维多利亚的维姬 有一个 perl 模块可以在这里做到这一点 http metacpan org pod Lingua EN 昵称 http metacpan o
  • SVG 圆起点

    如何更改 svg 圆的起始点 使其从 0 点钟开始逐渐动画化 默认圆形 svg 从 3 点钟开始 我当前的圈子 悬停动画 timeline position fixed width 500px height 500px top 50 lef
  • Java Pair 类实现[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有经过验证的 Java Pair 类实现 我的意思是随时可用 被广泛接受和测试 可能是 Apache
  • jQuery Highcharts:使用下拉列表更改图表类型

    我正在尝试更改图表的值 如下所示
  • Git 推送不起作用错误“您必须使用个人访问令牌或 SSH 密钥”

    Git 抛出错误 C Program Files x86 Git bin git exe push u recurse submodules check progress origin refs heads dev civaplugin r
  • Android Holo 主题不包含多行微调器下拉项[重复]

    这个问题在这里已经有答案了 我最近刚刚在我的 Android 应用程序中实现了全息主题 执行此操作后 我拥有的任何下拉项长为多行的微调器都不会将文本换行为多行 每个下拉项目都保留在一行上并被截断为一定的长度 这是我的微调器下拉资源的 xml
  • 如何在 pyspark - dataframe 中将月份名称更改为不同的语言

    我正在尝试使用以下配置在 Databricks 上创建 日期 表 Get date range dateFrom dbutils widgets get date from dateTo dbutils widgets get date t
  • 在客户端计算机上安装 BCP 而不安装 SQL Server?

    我使用从数据库导出数据BCP实用程序 我想在客户端计算机上安装 bcp 我不想在客户端计算机上安装 SQL Server 2008 他们是否有可用于仅安装 bcp 的最小安装程序 这是一项紧急任务 提前致谢 您必须使用其中之一SQL Ser
  • 样式表中的单位“em”取决于什么。 CSS

    em根据屏幕尺寸调整尺寸 是的 但很困惑 em 取决于浏览器设置吗 哪些设置 或者 em 取决于屏幕分辨率 或者帮助它依赖什么以及从哪里可以更改这些元素以观察使用 em 时大小的差异 1em 等于当前字体大小 2em 表示当前字体大小的 2
  • 停止 JavaScript 中挂起的异步函数

    这里我有两个同时运行的 JS 异步函数 当一个结束 回调已运行 时 我想阻止另一个继续 但是 这是我的问题 我无法使用全局变量 然后 我想知道是否可以停止 JS 中的待处理函数或任何方法来解决我的问题 我将不胜感激任何答案 EDIT 一些澄
  • 修改后的 ClaimsPrincipal 无效

    我正在使用 ASP NET MVC Identity2 我添加了 名字 自定义ClaimPrincipal public async Task
  • 任意泛型的 Typescript 映射

    我试图定义两种类型 它们应该类似于 export type IQuery
  • 如何在 SVG 中嵌入 schema.org 标记?

    我希望向 SVG 文件添加语义 并希望使用 schema org 术语 SVG 有执行此操作的语法吗 我的第一次尝试是
  • LaTeX 中的脚注间距

    我正在写论文 研究生院说我需要在多个脚注之间留一个空格 而且文本和脚注开头之间的空格太小 有没有办法做到这一点 任何帮助是极大的赞赏 footnotesep是脚注之间的空格 setlength footnotesep 0 5cm footi
  • 将一堆扩展名为“.jpg”的 PNG 图像重命名为“.png”

    所以我有一个包含数千个图像文件的文件夹 所有这些文件都保存为 jpg 问题是其中一些文件实际上是 PNG 图像文件 因此它们无法在很多程序中打开 除非我手动将其扩展名更改为 png 例如 Ubuntu 图像查看器会抛出此错误 解释 JPEG
  • 销毁并重新初始化引导滑块

    我正在使用这里找到的 Bootstrap slider https github com seiyria bootstrap slider https github com seiyria bootstrap slider目前正在使用 v1
  • .NET 通过反射获取私有属性

    我有以下场景 装配A public abstract class MyBaseEntity Uncompleted method public void addChild