У нас есть код, который компилируется в библиотеку с помощью CodeDom. В некоторые из этих классов я хотел бы добавить операторы log4net.
Я не уверен в синтаксисе добавления следующей строки (чтобы я мог использовать объект журнала для журналов позже в классе) в код, который будет компилироваться динамически:
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Пока у меня есть следующее в классе, который строит код:
//create log4net entry
CodeMemberField log4netField = new CodeMemberField(typeof(log4net.ILog), "log");
log4netField.Attributes = MemberAttributes.Static | MemberAttributes.Private;
Должен ли я использовать InitExpression? Как в:
log4netField.InitExpression = new CodePrimitiveExpression();
Кажется, я не могу найти, как присвоить значение полю как часть объявления, и я также не могу найти, как я могу указать его только для чтения.
Это помогло: MSDN, но в нем нет примеров всего, что мне нужно.
Итак, моя основная проблема заключается в том, как добавить это:
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Я мало что знаю о CodeDom, но подозреваю, что что-то может не сработать, если я добавлю его как строку?