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

线

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

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

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

也是正确的。

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

有帮助吗?

解决方案

查看 博客文章:

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

同一页面上的评论说:

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

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

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

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

其他提示

我会宁愿评论了上面的答案,但我的分数不够高。

的语法记录在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]]")

和这是你如何使用,其接收两个通用类型类型:

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

可以,如果你愿意的话,使得它更容易理解在不同的线路上使用每一种类型。注意,第一支架必须的类型之后是正确的(FamilySection`2 ** [**)。

和这强烈签名类型作为通用参数。

<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" />
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top