У меня есть собственный атрибут [Finder]
для полей и свойств, и у меня есть своего рода фабрика, которая инициализирует все поля и свойства так, как я хочу. Вопрос: Я хочу сделать ленивую инициализацию (объект создается только при вызове некоторых методов этого объекта) для объектов, которые я инициализирую. Примечание: свойства и поля могут быть разных типов.
Ленивая инициализация для объектов, которые инициализируются отражением
Ответы (2)
В зависимости от того, как происходит инициализация, вы можете использовать новый тип Lazy<T>
. Другой возможностью было бы вернуть автоматически созданный подкласс вашего класса — прокси — который проверяет состояние инициализации при каждом вызове метода и при необходимости выполняет инициализацию.
person
Daniel Hilgarth
schedule
20.07.2011
Ленивый, кто не делает работу, можете ли вы предложить какую-нибудь библиотеку, которая создаст прокси для меня?
- person Powerslave; 20.07.2011
извините, но вы можете предложить что-то еще, потому что замок не соответствует моим потребностям и
- person Powerslave; 27.07.2011
Проблема решена, но проблема заключалась в том, что мне нужно было создать прокси для класса, у которого есть не виртуальные методы, которые нужно было перехватить!
- person Powerslave; 29.07.2011
Вы можете использовать System.Lazy‹T>. В противном случае вам придется реализовать логику, чтобы отслеживать, какие свойства/поля были инициализированы самостоятельно.
person
George Duckett
schedule
20.07.2011
Finder
? - person Daniel Hilgarth   schedule 20.07.2011