【发布时间】:2013-10-27 19:32:30
【问题描述】:
Type type = entity.GetType();
PropertyInfo[] properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var p in properties)
{
if(p.Name == "State")
{
context.Entry(INSTANCE_TO_WHICH_THE_PROPERTY_p_BELONGS_TO).State = FunctionThatWillSetTheState(p.State)
}
}
具有通用签名的方法接收类“实体”的实例
public static void EntityAction<TEntity>(TEntity entity)
where TEntity : class, IObjectWithState
然后循环遍历该实例中的属性
我如何获取属性“p”所属的类的对象/实例?
因为我需要告诉这个函数
context.Entry(INSTANCE_TO_WHICH_THE_PROPERTY_p_BELONGS_TO).State = FunctionThatWillSetTheState(p.State)
谢谢。
【问题讨论】:
-
你有实例:
entity- 还是有什么我不明白的地方? -
请用您使用的编程语言标记您的问题。
-
Entity 是正在传递的类的通用实例,我需要知道传递了什么类型的实例(实体)这里是接收“实体”的方法:public static void EntityAction
(TEntity 实体) where TEntity : class, IObjectWithState -
如果你有 TEntity 类型参数,那么你可以简单地说 typeof(TEntity).GetProperties(...) 而不是 entity.GetType() - 这可能有点优势,例如。更好的性能和实体处理 = null
-
如果该实体没有孩子或父母,它将起作用。例如:类实体{公共字符串名称{get;设置;}公共地址地址{get; set;}} 其中“Entity”类是子类,“Address”是父类。我试图完成的方法的想法是获取一个“实体”并遍历其属性,包括“实体”具有的任何子级或父级。当循环遍历所有属性、父项和子项时,它将为“实体”及其子项和父项设置不同类型的状态。
标签: c# loops object properties instance