例如A,我有一些课程,还有其他课程A (A1,A2).它A是一个容器 - 它只有字段,任何方法和属性.
另一类是B<T> where T : A,并扩展B (B1, B2)
有可能在c#中这样做吗?
public List<T<T1>> DoSomething(object parameter)
where T : B<T1>, new() where T1 : A, new()
Run Code Online (Sandbox Code Playgroud)
在该方法中,我必须动态创建T(B1或B2或B3)对象并填充该通用对象动态创建的T1对象(A1,A2,A3).是的,我可能可以使用Activator,但使用新的T()会更好并且使用更少的强制转换
你不需要 T<T1>
要清理一下:
public List<T> DoSomething<T, T1>(object parameter)
where T : B<T1>, new() // this specifies T<T1> already
where T1 : A, new()
{
}
Run Code Online (Sandbox Code Playgroud)
假设A并B拥有默认构造函数,则不需要new()约束.