10

我有一类类型ISimpleCache<IBrokeredDataObject>,我想在 App.Config 文件中添加为类型别名(然后是类型)

线

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

由于 <> 显然是错误的,但是我不相信逃避它们;

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

也是正确的。

我目前正在拆分我的代码以使用 Unity,因此距离可编译的代码库太远,无法快速测试,并希望在这里得到一些确认。

4

4 回答 4

22

看看这篇博文:

为了编写泛型类型,请使用`符号后跟接口/类接收的泛型类型的数量。

同一页面中的评论说:

为了在泛型中使用常量类型,您需要使用方括号 ( [[ ]])。

所以我猜你的配置文件应该包含这样的内容:

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

请注意使用“重音”或“反引号”字符 ( `),而不是普通的单引号 ( ')。

于 2009-01-18T06:58:35.227 回答
14

我宁愿对上面的答案发表评论,但我的分数还不够高。

此处记录了 Type.GetType 方法(字符串)的语法: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]]")
于 2011-09-22T15:37:03.617 回答
2

这就是您如何使用接收两种泛型类型的类型:

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

如果您愿意,您可以在不同的行上使用每种类型,以便更容易理解。请注意,第一个括号必须紧跟在类型 ( FamilySection`2**[** ) 之后。

于 2009-10-05T10:20:50.900 回答
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" />
于 2009-06-29T17:32:52.080 回答