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 ファイルに webmethod が含まれます。Web サービスは、JavaScript の AJAX によって呼び出されます。

Web サービスが開始時に Init メソッドを呼び出すにはどうすればよいですか?

4

1 に答える 1

0

ContainerIoC の静的コンストラクターで登録を実行するだけで、フィールドを初めてヒットする前/時に自動的に実行されます。

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 に答える