2010-01-15 79 views
0

想知道是否有一种可以动态地将子实体添加到父实体集的好方法(通用方法)。现在我必须做这样的事情,它不是很优雅:将子实体添加到父实体集

public int AppendChild<T>(PATIENT patient, T child) 
    where T : EntityBase 

    switch (typeof(T).Name) 
    {    
    case "EYE_EXAM": 
      patient.EYE_EXAMS.Add((EYE_EXAM)child); 
      break; 

    case "LEGS_EXAM": 
      patient.LEGS_EXAMS.Add(LEGS_EXAM)child); 
      break; 

    //etc, a very long list of possible types goes here 

    } 

有没有更好的方法来做到这一点?感谢您的解答

+0

你好,如果你发现我的答案有帮助,就真是巨大的,如果你可以将其标记为接受的答案。谢谢!如果没有,请告诉我如何改进它,我很乐意这样做。 – msigman 2012-03-24 16:09:19

回答

0
public void CreateChildIfNull<T>() 
{ 
    var child = Activator.CreateInstance(typeof(T)); 
    Entity.GetType().GetProperty(typeof(T).Name).SetValue(patient, child , null); 
} 

public void CreateChildIfNull(LambdaExpression Child) 
    { 
     Type ChildType = Child.Body.Type; 
     var myvar = Activator.CreateInstance(ChildType); 
     Entity.GetType().GetProperty(ChildType.Name).SetValue(Entity, myvar, null); 
    } 
相关问题