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

-3 .net c#

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

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

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

}
Run Code Online (Sandbox Code Playgroud)

这段代码不起作用.我想从DTO映射到DAL,反之亦然.

我试过让这个类非泛型

public static class Class
{

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

            }
}
Run Code Online (Sandbox Code Playgroud)

我从"this"收到错误消息.

Lua*_*aan 8

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

例如:

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

当然,这不会真正起作用 - 没有办法推断方法调用的参数,这使得这种方法毫无用处.

  • 这里重要的部分是不要忘记在方法名称后面添加 `&lt;T, P&gt;`,例如 `Convert&lt;T, P&gt;`。 (3认同)