2017-12-06 1 views
3

나는 다음과 같은 경우가 있습니다부모 자식 관계

public class ParentObject 
{ 
public int id {get;set;} 
public string parent_object_name {get;set;} 
public List<ChildObject> child_objects {get;set;} 
} 

public class ChildObject 
{ 
public int id {get;set;} 
public string child_object_name {get;set;} 
} 

ParentObject parent_object = new ParentObject() 
{ 
    id = 1, 
    parent_object_name = "test name", 
    child_objects = new List<ChildObject>(){ new ChildObject(){ id = 1, child_object_name = "test name"}; 
} 

나는 parent_object.child_objects을 참조하기 위해 완벽하게 유효하다는 것을 알고,하지만 난 참조 등을 가지고 내 수업을 코딩 할 수있는 방법을 잘 모르겠습니다을 예 : child_objects.First().parent_object Entity Framework의 탐색 속성과 비슷합니다.

+1

@Fildor 편집을. – mko

답변

3

한 가지 방법은 매개 변수로 부모를 받아들이는 생성자를 정의하는 것입니다. ChildObjectParentObject을 추가함으로써

public class ChildObject 
{ 
    public ChildObject(ParentObject aParent) 
    { 
    parent = aParent 
    } 

    public ParentObject parent { get; private set; } 
    public int id {get;set;} 
    public string child_object_name {get;set;} 
} 
2

이 시도 :

public class ChildObject 
{ 
    public int id { get; set; } 
    public string child_object_name { get; set; } 
    public ParentObject parent_object { get; set; } 
} 
+1

WeakReference를 사용하는 것이 바람직합니까? – Fildor

+0

@Fildor - 왜? 무슨 목적을 위해? 학부모는 GCed가 될 수 있다고 생각하지만 아이는 없어야합니다. – Enigmativity

+1

그건 내 생각 이었어. 그러나 필요한지 확실하지 않습니다. 이제 귀하의 의견을 읽으면서 그것은 나쁜 생각일지도 모릅니다. – Fildor

1

, 당신은 자식에서 부모를 사용할 수 있습니다

Try it online

public class ParentObject 
{ 
    public int id {get;set;} 
    public string parent_object_name {get;set;} 
    public List<ChildObject> child_objects {get;set;} 
} 

public class ChildObject 
{ 
    public int id {get;set;} 
    public string child_object_name {get;set;} 

    // add a parent 
    public ParentObject parent_object {get;set;} 
} 


public static void Main() 
{ 
    var parent_object = new ParentObject 
    { 
     id = 1, 
     parent_object_name = "test name" 
    }; 
    parent_object.child_objects = new List<ChildObject> 
    { 
     new ChildObject {id = 1, child_object_name = "test name", parent_object = parent_object} 
    }; 
    Console.WriteLine(parent_object.child_objects.First().parent_object.parent_object_name); 
}