在 C# 中是否有一种获取字段名称的干净方法

发布于 2025-01-10 01:44:27 字数 845 浏览 0 评论 0原文

我有一种方法可以将字段从一个对象复制到另一个对象,

        public static T CopyEntity<T>(this T source, T other)
        {
            if (source.GetType() != other.GetType()) return default(T);
            var fields = source.GetType()
                .GetProperties()
                .Where(x => x.Name.ToUpper().CompareTo("ID") != 0).ToList();

           

            foreach (var field in fields) 
            {
                field.SetValue(source,field.GetValue(other));
            }
            return source;
        }

其中有一部分我过滤掉了 id 字段,因为我永远不想复制它。 我想要的是添加可选参数来过滤我可能想动态添加的其他字段,我知道我可以使用类似的方法,

obj.CopyEntity<OBJ>(other,nameof(obj.foo));

有没有一种方法可以简单地做到这一点

obj.CopyEntity<OBJ>(other,obj.foo);

,并解析方法中的字段名称,这样我就不必为我的每件事添加 nameof 想要该函数忽略吗?

I have a method to copy over fields from one object to another

        public static T CopyEntity<T>(this T source, T other)
        {
            if (source.GetType() != other.GetType()) return default(T);
            var fields = source.GetType()
                .GetProperties()
                .Where(x => x.Name.ToUpper().CompareTo("ID") != 0).ToList();

           

            foreach (var field in fields) 
            {
                field.SetValue(source,field.GetValue(other));
            }
            return source;
        }

there is the part where I filter out the id field because I would never want to copy that over.
What I want is to add optional parameters to filter other fields I may want to add on the fly, I know I could use something like

obj.CopyEntity<OBJ>(other,nameof(obj.foo));

is there a way to do it simply like

obj.CopyEntity<OBJ>(other,obj.foo);

and parse the field name in the method so I dont have to add nameof for every thing I
want the function to ignore?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文