2011-06-10 137 views
0

我有這樣的代碼的時刻:如何使用泛型調用此泛型方法?

Method1<Class1<Class2>>(); 

public void Method1<T>() 
{ 
    // process 
} 

Class1需要一個泛型類型本身(Class2)。

我必須撥打Method1大約10次,其中所有Class2都是同一類型。

所以我怎麼會叫Method1的東西,如下列:

Method1<Class1<J>>(); 

J是一個泛型類型本身爲Class1

+0

我已經格式化的問題(順便說一句:你已經問過你請儘量花時間學習如何正確格式化!)但它仍然是不可理解的:(1)你使用什麼語言? (2)你在問什麼? – 2011-06-10 15:09:27

+0

你可以請你重提你的問題嗎?我很難理解你在問什麼。 – 2011-06-10 15:09:33

+0

也許你可以添加一些關於你的意圖的信息,所以答案將集中在正確的方向。你想得到更清潔的維護代碼,更短的行,嘗試避免雙泛型(也是一個靜態CA警告,分辨率請參閱下面的答案)等等。 – eFloh 2011-06-10 15:50:50

回答

0

您可以在類文件中使用using指令來爲您的一個或兩個類別生成別名。

using J = Class2; 
using MyClass = Class1<Class2>; 

(採用適當的命名空間所必需的類的名稱,如Foo.Bar.Class1等)

現在你可以用以下任何陳述

Method1<Class1<Class2>>(); 
Method1<Class1<J>>(); 
Method1<MyClass>(); 
1

是的調用你的方法。

同樣適用於這裏:

IList<IEnumerable<string>> 
0

甚至更​​乾淨的代碼爲使用using:創建一個真正的子類:

class SpecializedClass1:Class1<Class2> 
{ 
    /* empty or do whatever makes sense in this specialized variant */ 
}