2011-07-27 31 views
2

我有一個通用對象:MyGenericObject(of T),如何在log4net中在配置文件中註冊custom renderer?例如,如果這是一個正常的對象以下將工作:如何爲通用對象配置Log4Net自定義對象呈現器?

<renderer renderingClass="MyObjectRenderer, MyClassLibrary" renderedClass="MyObject, MyClassLibrary" /> 

但是我不知道怎麼寫這個仿製藥,我嘗試這樣的:

<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'. 

有沒有人有更好的想法如何實現我想要的?

回答

1

您在XML文件MyObject(Of MyNonGenericObject)中使用的語法特定於VB .NET,就像MyObject<MyNonGenericObject>特定於C#。

你改變你的聲明中使用的語言無關的CLR類型的語法:(1`表明之後的類型參數的數量)

MyObject`1[[MyNonGenericObject, MyClassLibrary]], MyClassLibrary 

所以行會:

<renderer renderingClass="MyObjectRenderer, MyClassLibrary" renderedClass="MyObject`1[[MyNonGenericObject, MyClassLibrary]], MyClassLibrary" /> 
+0

是有道理的,謝謝。 –

相關問題