为标题道歉 - 我真的无法想出描述我的要求的非常好的方式。
我希望能够定义一个通用接口(或类,它并不重要),其中Type参数提供另一个可以从类访问的Type。希望这段代码片段能够解释。
interface IFoo
{
TOtherType DependentType { get; }
}
interface IMyGeneric<TBar> where TBar : IFoo
{
TBar ReturnSomeTBar();
TBar.DependentType ReturnSomeTypeOnTBar();
}
因此,在此示例中,我希望一个类实现IFoo
(例如Foo
)并公开另一个类型DependentType(例如int
),这样我就可以使用IMyGeneric<Foo>
有方法:
public Foo ReturnSomeTBar()
{
}
public int ReturnSomeTypeOnTBar()
{
}
显然上面的代码没有编译,所以有没有办法实现泛型链接的这种行为?
答案 0 :(得分:2)
首先,IFoo也需要通用
interface IFoo<TDependent>
{
TDependent DependentType { get; }
}
然后IMyGeneric需要有2种类型的参数
interface IMyGeneric<TBar,TDependent> where TBar : IFoo<TDependent>
{
TBar ReturnSomeTBar();
TDependent ReturnSomeTypeOnTBar();
}
也许这会让你更接近你的解决方案;重新开始。
答案 1 :(得分:1)
TBar.DependentType
必须是TBar
的一部分,这不是你可以对泛型类型参数进行约束的那种。
如何使用2种类型的参数呢? IMyGenertic<TBar, TFoo>
?可用的解决方法?