在 C# 中是否有一种获取字段名称的干净方法
我有一种方法可以将字段从一个对象复制到另一个对象,
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论