Force generic interface implementation in C#

别说谁变了你拦得住时间么 提交于 2019-12-01 16:04:03

Do you mean, can a constraint also be put on T like where T : interface?

If so, then no: this list pretty much covers your options.

What you have is as close as it gets, I believe.

Out of curiosity, what would be your reason for wanting to constrain T to be an interface?

Or do you mean can a constraint also be put on T for T to implement some specific interface?

If so, then yes: simply have two where clauses (e.g., where S : T where T : U).

where T: IMyOtherInterfaceForT

Example:

    public class Test<T, V>
    where T : V
    where V : IEnumerable<int>
    {
    }

You could do something like this to enforce it at runtime instead of compile time.

public class Test<T> where T : class
{
  public Test()
  {
    Type t = typeof( T );
    if( !t.IsInterface )
      throw new ArgumentException( "T must be an interface type" );
  }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!