如何接受任何类型的泛型论证?

Jon*_*ood 3 c# generics

假设我有一个泛型类.

public class PagerInfo<T>
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我想将此类的实例传递给另一个类中的方法.

public void Pagination(PagerInfo pagerInfo)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

上面的方法不会编译,因为我没有提供类型参数.但是,如果我希望这种方法无论何种类型都能工作,该怎么办?也就是说,我希望这种方法可以在PagerInfo不管类型的情况下对实例进行操作.并且我的方法不会访问任何特定于类型的方法或属性.

另外,请注意我的实际方法是在ASP.NET MVC cshtml辅助方法中,而不是常规的cs文件.

dtb*_*dtb 5

如果方法不访问使用泛型类型参数的类型的成员,则通常定义泛型类型派生的非泛型基类型:

public abstract class PagerInfo
{
    // Non-generic members
}

public class PagerInfo<T> : PagerInfo
{
    // Generic members
}
Run Code Online (Sandbox Code Playgroud)
public void Pagination(PagerInfo pagerInfo)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

  • 接口可能更好,因为如果需要,它仍然允许类`PagerInfo <T>`从另一个类继承. (4认同)