在C#中声明通用静态方法

时间:2015-06-01 11:07:12

标签: c# .net

有没有办法在C#中声明一个通用的静态方法?
例如:

public static class Class<T,P> 
    where T:class
    where P:class
{

    public static T FromTtoP (this P ob)
    {
    ...
    }

}

此代码不起作用。 我想从DTO映射到DAL,反之亦然。

我试过让这个类非泛型

public static class Class
{

    public static TDTO MapToDTO<TDTO, TDAL>(this TDAL dal)
                where TDTO : class
                where TDAL : class
            {

            }
}

我从“this”收到错误消息。

1 个答案:

答案 0 :(得分:6)

您不能在泛型类中使用扩展方法。相反,使方法通用,并使该类非通用。

例如:

public static class MyExtensions
{
  public static T ConvertToT<T, P>(this P ob)
    where T : class
    where P : class
  {
    // ...
  }
}

当然,这不会很好用 - 没有办法推断方法调用的参数,这使得这种方法毫无用处。