1

我尝试在 Web 服务中与 Unity 一起学习和使用 IoC,但我不知道如何或应该调用调用所有 registerType 方法的方法。

在伪代码中,我将尝试澄清我的问题。

[WebMethod]
public void DoSomething()
{
    var obj = IoC.Resolve<ISomeInterface>();
    obj.Container.DoSomething();
}

interface ISomeInterface
{
    void DoSomething();
}

public class SomeClass : ISomeInterface
{
    pulic void DoSomething()
    {
        //do something here
    }
}

public static class IoC
{
    public static IUnityContainer Container = new UnityContainer();

    public static void Init()
    {
        container.RegisterType<ISomeInterface, SomeClass>();
    }
}

在上面的示例中,我不知道应该如何或应该调用方法 Init()。我尝试在按照后续步骤创建的项目中执行此操作。我在 Visual Studio 2012 中创建了一个新的空 ASP.NET Web 应用程序。然后我向它添加了一个 Web 服务项,并且在 .asmx.cs 文件中是我的 Web 方法。Web 服务将由 JavaScript 中的 AJAX 调用。

我需要做什么才能让 web 服务在启动时调用 Init 方法?

4

1 回答 1

0

Container您可以在 IoC 的静态构造函数中执行注册,以便在您第一次点击该字段之前/时自动执行它:

public static class IoC
{
    public static readonly IUnityContainer Container;

    static IoC()
    {
        IUnityContainer container = new UnityContainer();
        container.RegisterType<ISomeInterface, SomeClass>();
        Container = container;
    }
}
于 2013-05-18T13:32:54.577 回答