gpt4 book ai didi

c# - 国际奥委会和银光

转载 作者:行者123 更新时间:2023-11-30 16:28:14 25 4
gpt4 key购买 nike

在 mvc asp.net 中,我可以重写一个工厂来创建我的 Controller ,因此就在这里放置一个对我的 IOC 的引用。这样做我的 Controller 的构造函数所需的每个接口(interface)都将由我的 IOC 提供。

使用 Silverlight 有一些通用的方法吗?目前我只发现到处都在使用 Ninject 的内核:

public partial class MyUserControlSL   
{
public MyUserControlSL()
{
DataContext = new MyViewModel(Kernel.Get<IMyRepository>());
InitializeComponent();
}
}

例如使用 StructureMap 和 MVC:

public class ControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(
RequestContext requestContext, Type controllerType)
{
IController result = null;
try
{
if (controllerType != null)
{
result = ObjectFactory.GetInstance(controllerType)
as Controller;
}
else
{
return base.GetControllerInstance(
requestContext, controllerType);
}
}
catch (StructureMapException)
{
System.Diagnostics.Debug.WriteLine(
ObjectFactory.WhatDoIHave());
throw;
}

return result;
}
}

public AController(IServiceA serviceA)
{
if (serviceA == null)
{
throw new Exception("IServiceA cannot be null");
}
_ServiceA = serviceA;
}

public ServiceA(IRepositoryA repository)
{
if (repository == null)
{
throw new Exception(
"the repository IRepositoryA cannot be null");
}

_Repository = repository;
}

感谢大家的帮助,有不清楚的请追问..

最佳答案

在 Silverlight 中,您应该在组合根目录下使用 Bootstrap 来连接整个对象图。它可能是应用程序类 app.xml.cs,看起来类似于

public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
Bootstrapper bootstrapper = new Bootstrapper();
bootstrapper.Run();
}
}

一般来说,这应该足够了,但如果您需要一个单独的工厂类来处理您的 View ,请查看 Keeping the DI-container usage in the composition root in Silverlight and MVVM .

关于c# - 国际奥委会和银光,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7281064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com