.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 反射:如何获取部分类上定义的属性 的相关文章

  • 在 C 语言中,为什么数组的地址等于它的值?

    在下面的代码中 指针值和指针地址与预期不同 但数组值和地址则不然 怎么会这样 Output my array 0022FF00 my array 0022FF00 pointer to array 0022FF00 pointer to a
  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • Boost ASIO 串行写入十六进制值

    我正在使用 ubuntu 通过串行端口与设备进行通信 所有消息都必须是十六进制值 我已经在 Windows 环境中使用白蚁测试了通信设置 并得到了我期望的响应 但在使用 Boost asio 时我无法得到任何响应 以下是我设置串口的方法 b
  • 如何在 C# 中将 Json 转换为对象

    我想将 Json 转换为 C 中的对象 这里的 Json 是 值 e920ce0f e3f5 4c6f 8e3d d2fbc51990e4 如何使用 Object 问题看似愚蠢 但其实并不那么愚蠢 我没有简单的 Json 我有 IEnume
  • C# 中一次性对象克隆会导致内存泄漏吗?

    检查这个代码 class someclass IDisposable private Bitmap imageObject public void ImageCrop int X int Y int W int H imageObject
  • 为什么这个 makefile 在“make clean”上执行目标

    这是我当前的 makefile CXX g CXXFLAGS Wall O3 LDFLAGS TARGET testcpp SRCS main cpp object cpp foo cpp OBJS SRCS cpp o DEPS SRCS
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • Guid.NewGuid().GetHashCode() 用于数据库

    这对于用作数据存储 SQL Server 的 ID 可靠吗 我会使用 guid 但我更喜欢数字值 A guid更有可能代表一个记录uniquely than a numeric value 随着 GUID 确保全球唯一性 GUID 可以跨数
  • 测量进程消耗的 CPU 时钟

    我用 C 语言编写了一个程序 它是作为研究结果创建的程序 我想计算程序消耗的确切 CPU 周期 精确的循环次数 知道我怎样才能找到它吗 The valgrind tool cachegrind valgrind tool cachegrin
  • 条件类型定义

    如果我有一小段这样的代码 template
  • 如何对使用 Controller.User 变量的控制器操作进行单元测试?

    我有一个控制器操作 如果用户已经登录 它会自动重定向到新页面 User Identity IsAuthenticated 针对这种情况编写单元测试以确保重定向发生的最佳方法是什么 我一直在使用以下 Mocks 和 Moq 来允许在我的单元测
  • Unity c# 四元数:将 y 轴与 z 轴交换

    我需要旋转一个对象以相对于现实世界进行精确旋转 因此调用Input gyro attitude返回表示设备位置的四元数 另一方面 这迫使我根据这个四元数作为默认旋转来计算每个旋转 将某些对象设置为朝上的简单方法如下 Vector3 up I
  • 如何在多线程应用程序中安全地填充数据并 Refresh() DataGridView?

    我的应用程序有一个 DataGridView 对象和一个 MousePos 类型的列表 MousePos 是一个自定义类 它保存鼠标 X Y 坐标 类型为 Point 和该位置的运行计数 我有一个线程 System Timers Timer
  • MySQL 连接器 C++ 64 位在 Visual Studio 2012 中从源代码构建

    我正在尝试建立mySQL 连接器 C 从源头在视觉工作室2012为了64 bit建筑学 我知道这取决于一些boost头文件和C 连接器 跑步CMake生成一个项目文件 但该项目文件无法编译 因为有一大堆非常令人困惑的错误 这些错误可能与包含
  • ASP.NET Core 中间件与过滤器

    在阅读了 ASP NET Core 中间件之后 我对何时应该使用过滤器以及何时应该使用中间件感到困惑 因为它们似乎实现了相同的目标 什么时候应该使用中间件而不是过滤器 9频道有一个关于此的视频 ASP NET 怪物 91 中间件与过滤器 h
  • .NET 和 Mono 之间的开发差异

    我正在研究 Mono 和 NET C 将来当项目开发时我们需要在 Linux 服务器上运行代码 此时我一直在研究 ASP NET MVC 和 Mono 我运行 Ubuntu 发行版 想要开发 Web 应用程序 其他一些开发人员使用 Wind
  • C++ 指针引用混淆

    struct leaf int data leaf l leaf r struct leaf p void tree findparent int n int found leaf parent 这是 BST 的一段代码 我想问一下 为什么
  • 从后面的代码添加外部 css 文件

    我有一个 CSS 文件 例如 SomeStyle css 我是否可以将此样式表文档从其代码隐藏应用到 aspx 页面 您可以将文字控件添加到标头控件中 Page Header Controls Add new System Web UI L
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内
  • 如何在 ASP.NET Core 中注入泛型的依赖关系

    我有以下存储库类 public class TestRepository Repository

随机推荐

  • 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