Я использую webforms, и мне интересно, как я могу удалить последующую конкретную ссылку на репозиторий. Раньше я использовал виндзор с замком с MVC, но я не думаю, что могу использовать это здесь?Удаление зависимости от конструктора
код позади:
ICustomerRepository repos;
public Workout_Admin()
// here is the offending concrete implementation
: this(new SqlCustomerRepository()) { }
public Workout_Admin(ICustomerRepository repos)
{
this.repos = repos;
}
ОБНОВЛЕНО ---
Я обновил статический метод как suggeted, а также добавление дополнительного кода на завод Виндзоре
WindsorContainer container;
public WindsorControllerFactory()
{
container = new WindsorContainer(
new XmlInterpreter(new ConfigResource("castle")));
var controllerTypes =
from t in Assembly.GetExecutingAssembly().GetTypes()
where typeof(IController).IsAssignableFrom(t)
select t;
foreach (Type t in controllerTypes)
{
container.AddComponentLifeStyle(t.FullName, t,
LifestyleType.Transient);
}
CommonServiceLocatorPageHandlerFactory.Container = container;
}
Проблема, которая сохраняется, заключается в загрузке сборки из файла конфигурации. CommonServiceLocatorPageHandlerFactory входит в состав и сборка под названием yourfit, папка с именем factory. А вот соответствующие конфиги
<httpHandlers>
<add verb="*" path="*.aspx"
type="YourFit.Factory.CommonServiceLocatorPageHandlerFactory, YourFit"/>
</httpHandlers>
<handlers>
<remove name="UrlRoutingHandler"/>
<add name="CSLPageHandler" verb="*" path="*.aspx"
type="YourFit.Factory.CommonServiceLocatorPageHandlerFactory, YourFit"/>
</handlers>
и ошибка:
Не удалось загрузить тип «YourFit.Factory.CommonServiceLocatorPageHandlerFactory» из сборки «YourFit».
Я знаю, что, скорее всего, я действительно глуп. Большое спасибо за ваше время.
Вы также можете взглянуть на этот вопрос: http://stackoverflow.com/questions/293790/how-to-use-castle-windsor-with-asp-net-web-forms. – Steven
Спасибо. В настоящее время я смотрю, как получить dll для Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance – hoakey
В статье он говорит: «Я намеренно использую CSL для этого, потому что моя библиотека« Локатор сервисов »зависит от этого интерфейса. вы не используете CSL, изменение кода для работы с вашей библиотекой IoC можно сделать, изменив одну строку, как вы увидите ниже ». Он, похоже, не показывает пример. Поэтому, когда я запускаю его, я получаю сообщение об ошибке «Не удалось загрузить CSL или сборку CSL или одну из ее зависимостей». Есть идеи? – hoakey