interface <T>方法<T2>其中T2:T

Jos*_*sen 0 .net c# generics

看看这个片段

public interface IExample<T>
{
    IExample<T> Exposes<TInclude>() 
        where T : TInclude;
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找编译时间强制执行T可以转换为TInclude.可以进行运行时检查,但更喜欢它是编译时间.

以上抱怨T没有定义.

有什么建议?我正在尝试用C#泛型做什么?

Eri*_*ert 5

改述你的问题:

它有可能使一个where强制执行的约束条款TIncludeT或源自任何类型T.我正在寻求强制执行"相反方向"约束:那TIncludeT或者任何"基本类型" T.这可能吗?

不,C#不支持这种约束.抱歉.

有什么建议?

Scala支持我认为的那种约束.和Java一样,尽管Java的做法有点奇怪.但我想你不想改变语言.

您能否更详细地描述您希望通过此界面表示的概念?如果我们知道你想要做什么,那么给你提供务实的建议会更容易.