2015-06-01 73 views
-5

有什麼方法可以在C#中聲明通用靜態方法嗎?
例如:聲明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 
      { 

      } 
} 

我從「本」的錯誤消息。

+2

_does not work_是什麼意思?你得到任何異常或錯誤信息?你能否更具體地說明你的問題? –

+1

爲什麼你認爲仿製藥可以解決你的問題?爲什麼你使用擴展方法來實現這一點? – Luaan

+3

你沒有聲明一個通用的方法 - 你現在正在聲明一個通用的*類*。 –

回答

4

在泛型類中不能有擴展方法。相反,使方法是通用的,並保持類不是通用的。

例如:

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

當然,這不會真的都很好 - 有沒有辦法來推斷的參數方法調用,這使得這種沒用的。

+0

非常感謝... – McCorn