2012-11-27 88 views
0
public class clsA<T, T1> 
    where T : class 
    where T1 : class 
{ 
    public T GetEntity() 
    { 
     return (T) new clsB<T1>();    
    } 
} 

我收到錯誤無法將類型clsB<T1>到T轉換異常

請幫

+0

這是什麼語言?你可以給這個問題添加一個語言標籤嗎? –

回答

0

這是因爲T可以是任何東西 - string例如,和這會導致演員失敗。如果T不能是變量類型,則不要將其包含在泛型參數列表中。

如果你想允許TclsB<T1>或任何亞型,並希望構建一個類的實例,然後做這個:

public class clsA<T, T1> 
    where T : clsB<T1>, new() 
    where T1 : class 
{ 
    public T GetEntity() 
    { 
     return new T(); 
    } 
} 

然後,給定類型:

public class clsC : clsB<string> { } 

對類型爲clsA<clsC, string>的對象調用GetEntity()將構造並返回clsC的實例。

+0

thnx cdhowie.it的作品。 – sjj