Вы должны быть в состоянии использовать синтаксис выражения @()
:
<a class="@(User.Identity.IsAuthenticated ? "auth" : "anon")">My link here</a>
У меня не установлена Razor, поэтому я могу ошибаться.
Посмотрите, как SpringFramework решает эту проблему. Он использует Common.Logging, который затем может быть сопоставлен с log4net или любой другой настраиваемой структурой ведения журнала через файл конфигурации. Вы можете найти более подробную информацию на веб-сайте Common.Logging , но в основном вы делаете следующее:
<configSections>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
<arg key="configType" value="INLINE" />
</factoryAdapter>
</logging>
</common>
<log4net>
.... normal log4net configuration goes here...
</log4net>
Если клиент также напрямую использует SpringFramework или Common.Logging, конфликт все еще возможен, но его вероятность значительно снижается по следующим причинам:
Используйте Корпоративную библиотеку . Он достаточно гибкий и использует как встроенные, так и собственные логгеры. Он также был достаточно совместим с версией. Он достаточно настраиваемый, чтобы в случае конфликта с конкретным компонентом его можно было легко заменить, просто изменив конфигурацию.
Используйте System.Diagnostics.Trace
. Тогда никаких шансов на конфликт версий!
Вот здесь ваш друг - инъекция зависимостей - вам, вероятно, не нужно использовать весь log4net, а скорее некоторые его небольшие части. Поэтому напишите в своем приложении класс ILogger, который раскрывает ваши функции, а затем напишите реализацию для любого регистратора (ов), который вы хотите использовать. Например, средство ведения журнала Debug.Trace () отлично подходит для разработки или отладки, а для производства может потребоваться драйвер log4net. Затем используйте внедрение зависимостей, например StructureMap, чтобы вставить экземпляры вашего регистратора в производственный код.
используйте внедрение зависимостей (Unity, Castle Windsor и т. Д.), Чтобы указать, какую dll log4net использовать таким образом, если клиент использует более старую версию, вы можете просто подключить туда версию log4net, если у них ее нет, предоставьте свою.