nairnishitha Ответов: 1

Можно ли иметь отдельную память для статического класса для каждого продукта?


Все мои сборки-это библиотеки DLL, а не бывшие. Есть два продукта P1.dll и еще P2.dll-да. Ряд сборок имеют общие функциональные возможности и, таким образом, упоминаются как P1, так и P2. Позвольте мне назвать их полезностью.dll, лицензия.проблемы, Configuration.dll.

Все сборки Р1, Р2, лицензию и настройки и любые другие DLL относится утилиты DLL как он имеет методы для входа, прочих вспомогательных функций и т. д.

Утилиты DLL имеет статический класс журнал, который является статическим методами как исключение(например), след(строка) и т. д.

Утилиты DLL также имеет статический приложение класс с AppVersion, RootAssembly, AppTitle и т. д. которая называется в журнал, или в течение любого сообщения из любой DLL и т. д. И класс имеет метод Initialize, где эти свойства задаются из P1 и P2.

Теперь проблема заключается в том, что один раз инициализация вызывается P1, а позже используется получает правильные значения, допустимые для P1. Если в это время P2 вызывает Initialize on App, а затем если эти свойства используются P1, то значения относятся к P2, а не к P1, причина в том, что класс приложения статичен.

Но на этом этапе трудно изменить везде, как в блоке catch, я просто вызываю Log.Exception(ex), чтобы передать приложение тоже, сделав его классом экземпляра.

А поскольку Log.Exception также является методом служебной библиотеки dll, можно ли сделать что-нибудь, чтобы обеспечить существование 2 копий класса приложения или 2 места в памяти для самой служебной библиотеки dll?

Заранее спасибо
Нишита

Что я уже пробовал:

Читайте о AppDomain, но не совсем понятно, как подать заявку на мой сценарий

F-ES Sitecore

Проблема в том, что вы злоупотребляете статическими классами, вы, вероятно, использовали статические классы, поскольку они легче доступны, а не потому, что они подходят для вашего решения. Если эти классы содержат состояние, которое они не должны быть статическими, вам необходимо реорганизовать свой код так, чтобы эти классы не были статическими.

Alex Schunk

Прости, мой друг... Ваше приложение разбито по дизайну.

1 Ответов

Рейтинг:
1

honey the codewitch

Если вы сделаете это для того, чтобы изменить свой код, вы разрушите свою кодовую базу.

Скажите своему личному врачу, что вам нужно провести рефакторинг.

А потом рефакторинг.

Или вы будете заливать за это на заднем конце стократно.

Вы следуете анти-паттернам и пытаетесь исправить анти-паттерны с помощью еще большего количества анти-паттернов.

Так будут драконы.