为标题道歉-我真的想不出一种很好的方式来描述我的要求。

我希望能够定义一个通用接口(或类,没关系),其中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()
{
}


显然,上面的代码无法编译,因此有没有办法实现这种通用链接的行为?

最佳答案

首先,IFoo也需要通用

interface IFoo<TDependent>
{
   TDependent DependentType { get; }
}


然后IMyGeneric将需要具有2个类型参数

interface IMyGeneric<TBar,TDependent> where TBar : IFoo<TDependent>
{
   TBar ReturnSomeTBar();
   TDependent ReturnSomeTypeOnTBar();
}


也许这会使您更贴近您的生活。

关于c# - 使用通用类型中定义的类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6571856/

10-11 16:20