2009-01-18 67 views
10

我有一個類ISimpleCache<IBrokeredDataObject>型的,我想添加爲在App.config一個類型別名(當時一型)文件包括統一app.config文件泛型類

<typeAlias alias="ISimpleCacheOfIBrokeredDataObject" type="MyApplication.ISimpleCache<IBrokeredDataObject>, MyApplication" /> 

由於<>顯然是錯誤的,但我不相信它們逃脫了;

<typeAlias alias="ISimpleCacheOfIBrokeredDataObject" type="MyApplication.ISimpleCache&lt;IBrokeredDataObject&gt;, MyApplication" /> 

是正確的要麼。

我目前正在將我的代碼拆分爲使用Unity,所以離編譯代碼庫太遠以便快速測試,希望在此得到一些確認。

回答

21

退房this博客文章:

爲了寫一個通用的類型,使用```符號後面的接口/類接收通用類型的數量。

而且在同一頁面評論說:

爲了在你需要使用括號([[ ]])一般使用恆定的類型。

所以我想你的配置文件應包含這樣的事情:

<typeAlias alias="ISimpleCacheOfIBrokeredDataObject" 
    type="MyApplication.ISimpleCache`1[[MyApplication.IBrokeredDataObject, MyApplication]], MyApplication" /> 

注意使用「重音符」或「反引號」字符(``), not the normal single quote (「')。

+3

值得加入它必須是'不'(微妙但重要的區別) – tjrobinson 2012-02-09 09:31:22

+0

@tjrobinson完成。謝謝。 – 2012-02-12 20:37:08

1

這是強簽名類型作爲泛型參數。

<typeAlias alias="IPublisherOfXElement" type="MyLib.IX.IPublisher`1[[System.Xml.Linq.XElement, System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], MyLib.IX" /> 
2

這是你如何使用接收兩個泛型類型類型:

<section name="doubleFamilyConfig" 
     type="ConfigTest.Configuration.FamilySection`2[ 
       [ConfigTest.Types.Child, ConfigTest], 
       [ConfigTest.Types.Parent, ConfigTest] 
       ], 
       ConfigTest" /> 

,如果你願意,你可以在不同的線路上使用每一種類型,所以它更容易理解。請注意,第一個括號必須在類型後面(FamilySection`2 ** [**])。

13

我寧願對上面的答案進行評論,但我的分數不夠高。

的語法記載的Type.GetType方法(String)位置:http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx

還有一堆的例子,其中的一些我下面粘貼。

的通用型與一種類型參數

Type.GetType("MyGenericType`1[MyType]") 

泛型類型具有兩個類型參數

Type.GetType("MyGenericType`2[MyType,AnotherType]") 

泛型類型具有兩個組件限定類型參數

Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]") 

程序集限定泛型類型的程序集限定的類型參數

Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly") 

泛型類型,其類型參數是泛型類型有兩個類型參數

Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")