我有一个通用对象:MyGenericObject(T),如何在配置文件中的log4net中注册custom renderer?例如,如果这是一个普通对象,则可以使用以下方法:
<renderer renderingClass="MyObjectRenderer, MyClassLibrary" renderedClass="MyObject, MyClassLibrary" />
但是我不知道如何为Generics写这个,我尝试了这个:
<renderer renderingClass="MyObjectRenderer, MyClassLibrary" renderedClass="MyObject(Of MyNonGenericObject), MyClassLibrary" />
但发生了这种情况:
log4net:ERROR XmlHierarchyConfigurator: Could not find class [MyObject(Of MyNonGenericObject), MyClassLibrary].
System.TypeLoadException: Could not load type 'MyObject(Of MyNonGenericObject)' from assembly 'MyClassLibrary'.
有没有人对如何实现我想要的东西有更好的想法?
答案 0 :(得分:1)
您在XML文件MyObject(Of MyNonGenericObject)
中使用的语法特定于VB .NET,就像MyObject<MyNonGenericObject>
特定于C#一样。
您将声明更改为使用与语言无关的CLR类型语法:
MyObject`1[[MyNonGenericObject, MyClassLibrary]], MyClassLibrary
(1
后`
表示类型参数的数量。)
所以该行将是:
<renderer renderingClass="MyObjectRenderer, MyClassLibrary" renderedClass="MyObject`1[[MyNonGenericObject, MyClassLibrary]], MyClassLibrary" />