编写实现接口所需的泛型类型的方法

时间:2014-07-30 16:08:06

标签: c# generics interface

假设有一个名为A的类,其方法如下:

public void SomeMethod<T>(ref T para1)
{
    ...
}

现在我有一个接口(让我们称之为ITest)强制执行一个方法(让我们称之为RequiredMethod()),并且有很多类实现了这个接口。

在SomeMethod的声明中,我怎么能提到T需要实现ITest以便我可以做这样的事情?

public void SomeMethod<T implements ITest>(ref T para1)
{
    ...
    para1.RequiredMethod();
    ...
}

4 个答案:

答案 0 :(得分:6)

使用generic constraints

public void SomeMethod<T>(ref T para1)
    where T : ITest
{
    // ...
}

答案 1 :(得分:3)

您可以使用C#where关键字。 MSDN page

public void SomeMethod<T>(ref T para1) where T : ITest
{
    ...
    para1.RequiredMethod();
    ...
}

答案 2 :(得分:0)

您需要在SomeMethod中添加一个位置。

public void SomeMethod<T>(ref T para1) where T:ITest

http://msdn.microsoft.com/en-us/library/bb384067.aspx

答案 3 :(得分:-3)

为什么不在T类的声明中而不是在方法中实现接口?