2011-02-07 54 views
1

当我在Parent和Child之间建立关联时,我的代码看起来如此复杂。关联Parent和Child数据模型对象的最佳方式是什么?

问题:关联Parent和Child数据模型对象的最佳方式是什么?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Linq.Expressions; 
using ConsoleApplication1; 

class Child 
{ 
    public string Name { get; set; } 
    public Parent Parent { get; set; } 
} 


class Parent 
{ 
    public string Name { get; set; } 
    public IEnumerable<Child> Children { get; set; } 
} 


class Program 
{ 
    static void Main(string[] args) 
    { 
     Parent p1 = new Parent { Name = "P1" }; 

     Child c1 = new Child { Name = "C1" }; 
     c1.Parent = p1; 

     Child c2 = new Child { Name = "C2" }; 
     c2.Parent = p1; 


     List<Child> children = new List<Child>(); 
     children.Add(c1); 
     children.Add(c2); 

     p1.Children = children; 
    } 

} 

回答

5

也许你应该实施一些辅助方法到类,其中封装了一些基本认为:

public class Parent { 

.... 
    public void AddChild(Child child) { 
     child.Parent = this; 
     this.Children.Add(child); 
    } 

    public void RemoveChild(Child child) { 
     child.Parent = null; 
     this.Children.Remove(child); 
    } 
} 


public class Child { 
    private Child() {} 

    public static Child CreateChild(Parent parent) { 
     var child = new Child(); 
     parent.AddChild(child); 
     return child; 
    } 
} 
+0

我会删除chid.Parent = Child构造函数的parent,parent.AddChild已经做到了。你只是在重复自己。也许让Child的构造函数是私有的,添加一个creater方法,将父类作为输入和其他属性,创建孩子并使用父母的AddChild方法(简单地说它是一个单身人士) – hazimdikenli 2011-02-07 12:53:03

1
class Parent 
{ 
    ... 
    public Child AddChild(string name) 
    { 
    return this.AddChild(new Child(name)); 
    } 

    public Child AddChild(Child c) 
    { 
    c.Parent = this; 
    this.children.Add(c); 

    return c; 
    } 
} 
相关问题