.NET 反射:如何获取部分类上定义的属性

2023-12-10

我使用 .NET 实体框架。我想将属性从一个 EntityObject 复制到另一个。但 System.Type.GetProperties() 似乎没有返回分部类上定义的属性。

Code:

在 Visual Studio 生成的 XXX.edmx/ XXX.Designer.cs 中,我有类 MyTable:

public partial class MyTable: EntityObject{..}

我想向 MyTable 类添加一些属性,因此我添加文件 XXX.Manual.cs:

public partial class MyTable: EntityObject{
    public string myProp{get;set;}
}

But myTableObj.GetType().GetProperties()不包含 myProp!!!

如何使用反射获取 myProp?

[EDIT]我想对 Alex 的答案发表评论,但不知道为什么代码部分没有格式化。

是的,这很奇怪。 我使用此代码将属性从实体复制到另一个对象:

public static void CopyTo(this EntityObject Entity, EntityObject another){
    var Type = Entity.GetType();
    foreach (var Property in Type.GetProperties()){
        ...
        Property.SetValue(another, Property.GetValue(Entity, null), null);
    }
}
//in some other place:
myTableObj.CopyTo(anotherTableObj);

当然,myTableObj 和 anotherTableObj 是 MyTable 类型。

当调试到 CopyTo 方法时,VS 显示 Entity & another 的类型为 MyTable & 我可以看到 Entity.myProp、another.myProp

但是 foreach 语句中的 Property var 根本不循环到 myProp 属性!

[EDIT]对不起。上面的代码(CopyTo方法)是从迪亚曼迪耶夫对另一个问题的回答

但他的代码是错误的:“break”语句必须替换为“continue”:D


首先,分部类就是源代码的分割方式。它不会影响编译后的程序集。

你很可能看不到myProp财产因为myTableObj不属于类型MyTable.

尝试这个:

var property = typeof(MyTable).GetProperty("myProp");

[EDIT]

刚刚检查:

EntityObject x = new MyTable();

var property1 = typeof(MyTable).GetProperty("myProp");
var property2 = x.GetType().GetProperty("myProp");

Both property1 and property2归还财产。

[EDIT]

尝试了你的代码,经过小修改后它就可以工作:

public static void CopyTo(EntityObject fromEntity, EntityObject toEntity)
{
    foreach (var property in fromEntity.GetType().GetProperties())
    {
        if (property.GetSetMethod() == null)
            continue;
        var value = property.GetValue(fromEntity, null);
        property.SetValue(toEntity, value, null);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET 反射:如何获取部分类上定义的属性 的相关文章

随机推荐

  • linux open调用返回EINVAL的可能原因

    我试图在我的源代码中进行系统调用 如下所示 int file file open argv index O RDONLY 其中命令行参数是我的文件系统中二进制文件的路径 但这个电话让我EINVAL错误 我已检查文件是否存在以及访问该文件所需
  • Asp.Net 4.0在SqlServer中存储会话

    我有共享托管提供的数据库 我想将会话存储在 sql server 中 但它给了我错误 Unable to use SQL Server because ASP NET version 2 0 Session State is not ins
  • 为什么某些 C++ 编译器允许您获取文字的地址?

    我不会透露名字的 C 编译器可以让你获取文字的地址 int p 42 显然 42 是一个右值 大多数编译器拒绝这样做 为什么编译器会允许这样做 除了搬起石头砸自己的脚之外 你还能做什么呢 如果您需要一个指向值为 42 的整数的指针怎么办 C
  • 2022 wasm blazor.web assembly.js 未找到 .net5 到 .net6 升级

    我正在尝试从 Blazor WASM net 5 项目升级到 net 6 我在所有项目上将其更改为 net6 0 一切都编译良好 但在加载 blazor web assembly js 时出现 404 错误 当我从资源管理器搜索它时 我在以
  • malloc 返回 NULL 并将 errno 设置为 ENOMEM,但有足够的堆空间可用?

    我有一种情况malloc 回报NULL和集errno to ENOMEM 但 CRT 堆 可增长 有足够的内存可供使用 在那个时间malloc 我的进程内存约为900 MB 主机进程是在 Sun HotSpot JVM 下执行的 Java
  • 在 Android 中创建带有导航抽屉的汉堡菜单

    我想在 android 中创建一个带有导航抽屉的汉堡菜单 我已经开发了它 但根据要求 菜单应该滑出基本片段而不是重叠 我想开发一些类似于 facebook 使用的汉堡菜单的东西 这就是我的要求 这就是我所完成的 如有任何帮助 我们将不胜感激
  • 如何在Python中删除诅咒窗口并恢复背景窗口?

    我正在研究 pythoncurses 并且我有一个带有 initscr 的初始窗口 然后我创建了几个新窗口来重叠它 我想知道是否可以删除这些窗口并恢复标准屏幕而无需重新填充它 有办法吗 有人能告诉我窗口 子窗口 垫和子垫之间的区别吗 我有这
  • 轮廓未绘制指定数量的轮廓

    我在循环中生成一些数据 并喜欢将它们绘制为等高线图 每个图应使用相同的颜色图和指定数量的等高线级别 另外 第一级颜色应该是白色 以下代码片段生成的图类似于我目前面临的问题 import numpy as np import matplotl
  • 如何通过使用 pycryptodome 的 pyinstaller 构建可执行文件?

    我正在尝试构建以下使用的脚本密码球 based on this example http www codekoala com posts aes encryption python using pycrypto comment 259217
  • Azure 迁移网站主机名

    我正在尝试在不同的订阅中设置辅助 Azure 网站 为新站点位置创建自定义主机名时 我被迫验证主机名 Azure 抱怨主机名是根据不同的 CNAME 注册的 并阻止我添加它 这是事实 但我不在乎 我希望将其从旧网站切换到 DNS 记录传播时
  • 必须声明一个主体,因为它没有标记为抽象或外部? C#/ASP.NET

    我有一个带有代码隐藏的普通 Web 表单 在这个代码隐藏中 我可以实例化根文件夹中的几个类 例如 public partial class Default System Web UI Page Helper helper new Helpe
  • 如何向 JTabbedPane 选项卡添加关闭按钮?

    我正在使用 JTabbedPane 我需要在选项卡中添加一个关闭按钮来关闭当前选项卡 我一直在搜索 据我了解 我必须从 JPanel 扩展并添加关闭按钮 正如他们所说here但是 有没有办法添加扩展 JTabbedPane 的关闭按钮 或者
  • WriteStream 无法在 Delta 表中写入数据

    我正在尝试使用以下代码从流路径连接 Streaming Json 文件 Schema1 customerId STRING orderId STRING products ARRAY
  • 正在寻找“分词器”、“解析器”和“词法分析器”的明确定义以及它们如何相互关联和使用?

    我正在寻找 分词器 解析器 和 词法分析器 的明确定义以及它们如何相互关联 例如 解析器是否使用分词器 反之亦然 我需要创建一个程序将通过 c h 源文件来提取数据声明和定义 我一直在寻找示例并且可以找到一些信息 但我真的很难掌握语法规则
  • Java:按指定的角度值围绕另一个点旋转点

    我试图将 java 中的 2D 点围绕另一个具有指定度数值的点旋转 在本例中只是围绕点 0 0 旋转 90 度 Method public void rotateAround Point center double angle x cent
  • Android 中的 GSON/Jackson

    我能够使用 JSONObject 和 JSONArray 成功解析 Android 中的以下 JSON 字符串 没有成功地使用 GSON 或 Jackson 获得相同的结果 有人可以帮助我使用包括 POJO 定义的代码片段来使用 GSON
  • 如何将 mutate 与具有多个参数的自定义函数一起使用

    我在 jared mamrot 的帮助下创建了这个自定义函数制作 dplyr 过程的自定义函数 它基本上采用一个数据框 一列和一个数字作为参数 并用 NA 替换该列中定义的值的百分比 y my func lt function df x y
  • Redis GET 与 SQL SELECT

    我对 NoSQL 还很陌生 但我一直很喜欢它的想法 我看了一下Redis 并提出了一些有关存储和接收多个的最佳方式的问题hashes 假设以下场景 Store a list of objects redis Hashes and selec
  • 解析 iOS 推送通知

    我已经完成了 Push 的事情解析网 一切正常 然后我被要求为公司创建一个解析帐户并进行设置 以便他们可以自己管理 好吧 没有意识到网站上有一个导出按钮 我删除了我帐户上的应用程序 并为他们创建了一个帐户 并将应用程序添加到他们的帐户中 我
  • .NET 反射:如何获取部分类上定义的属性

    我使用 NET 实体框架 我想将属性从一个 EntityObject 复制到另一个 但 System Type GetProperties 似乎没有返回分部类上定义的属性 Code 在 Visual Studio 生成的 XXX edmx