首页 > 解决方案 > 使用泛型类型的 C# 反向导航

问题描述

我的课程类似于这些:

public class Root<TChild> 
{
   int ID {get;}
   ...
   List<TChild> Children {get;}
}
public class Child
{
    int IDChild {get;}
    ...
}

我需要在 Child 类中添加反向导航属性以从 Child 访问其 Root,但我不知道如何声明Root<TChild>类型的属性。

Child 类中的哪种类型应该是 TChild?

标签: c#genericsaggregation

解决方案


我在.net fiddle中试过这个,似乎工作得很好

public class Root<TChild> 
{
   int ID {get;}
   List<TChild> Children { get; set; }
}

public class Child
{
    int IDChild {get;}
    Root<Child> MyRoot { get; set; }
}

// wherever
var root = new Root<Child> { Children = new List<Child>() };
root.Children.Add(new Child { MyRoot = root });

推荐阅读