繁体   English   中英

C#:如何设计泛型类,以便type参数必须继承某个类?

[英]C#: How to design a generic class so that the type parameter must inherit a certain class?

我写了一个看起来像这样的课:

public class MyClass<T>
{
    public void doSomething()
    {
       T.somethingSpecial;
    }
}

此代码无法编译,因为编译器不知道T是什么。 我想约束T,以便它必须继承某个定义somethingSpecial类。 如果你能告诉我如何通过限制T来做同样的事情以便它必须实现某个界面,那么奖励积分。

public class MyClass<T> where T: IAmSomethingSpecial

它被称为类型参数约束

在类声明中使用以下类型参数约束:

public class MyClass<T> where T : MyBaseClass

您可以在MSDN上阅读有关类型参数约束的更多信息。

你想要的是一个通用约束

public class MyClass<T> where T : SomeParentClass

您需要通用约束

public class MyClass<T> where T : ISomeInterface
{
  public void doSomething()
  {
    instanceOfT.somethingSpecial();
  }
}

阅读文档。 通用约束。

class MyClass<T> where T : someinterfaceorbaseclassthatTmustinherit
public interface ISomeInterface
{
    void DoSomething();
}

public class MyClass<T> where T : ISomeInterface
{
    public void doSomething()
    {
       T.DoSomething();
    }
}

where关键字允许您指定给定泛型类型的约束。 你可以换掉一个类的接口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM