Замена вызова конструктора на вызов метода фабрики с использованием прокси в C#
Возможно, я схожу с ума, но клянусь, я видел фрагмент, который позволяет пользователям вашего кода писать new Foo()
пока что то типа FooProxy.Create()
вызывается за кулисами вместо конструктора. Я искал и искал это, но теперь я не могу найти это вообще. Я не планирую использовать это вообще, так как это выглядит как антипаттерн для меня, но я хочу убедиться, что я не мечтал обо всем этом.
1 ответ
Ответ, кажется, нет.... Вы только мечтали. С /questions/2625225/sozdat-konstruktor-dlya-izvlecheniya-obekta-iz-kesha-ili-vossozdat-esli-nol/2625243#2625243:
Q: Создать конструктор (?) Для извлечения объекта из кеша или воссоздания, если ноль
A: Вы не можете создать конструктор, который делает это. Конструктор всегда создает новый объект. Вместо этого создайте статический метод фабрики:
Обратите внимание, что, безусловно, можно использовать Fody (инструмент, способный изменить сборку после компиляции), чтобы создать плагин, который заменяет прямой new Foo()
в FooProxy.Create()