1

私はこれで壁にぶつかっていますが、わかりません:

次のインターフェースがあります。

namespace SupplyOrder.Objects.Interfaces
{
    public interface ILoginRepository<T>
    {
         T GetUser(string username, string password);
    }
}

namespace SupplyOrder.Objects.Interfaces
{
    public interface ILoginService
    {
        User GetUser(string username, string password);
    }
}

およびこのインターフェイスを実装するクラス:

サービス クラス:

namespace SupplyOrder.Service
{
    public class LoginService : ILoginService
    {
        readonly ILoginRepository<User> _loginRepository;
        public LoginService(ILoginRepository<User> loginRepository)
        {
            _loginRepository = loginRepository;
        }

        public User GetUser(string username, string password)
        {
            return _loginRepository.GetUser(username, password);
        }

    }
}

UserRepository クラス:

namespace SupplyOrder.Dal
{
    public class UserRepository : ILoginRepository<User>
    {
        public User GetUser(string username, string password)
        {
            // call to DB
        }
    }
}

Bootstraper.cs ファイルには次のものがあります。

public class StructureMapControllerFactory : DefaultControllerFactory
{
    protected override IController
        GetControllerInstance(RequestContext requestContext,
        Type controllerType)
    {
        try
        {
            if ((requestContext == null) || (controllerType == null))
                return null;

            return (Controller)ObjectFactory.GetInstance(controllerType);
        }
        catch (StructureMapException)
        {
            System.Diagnostics.Debug.WriteLine(ObjectFactory.WhatDoIHave());
            throw new Exception(ObjectFactory.WhatDoIHave());
        }
    }
}

public static class Bootstrapper
{
    public static void Run()
    {
        ControllerBuilder.Current
            .SetControllerFactory(new StructureMapControllerFactory());

        ObjectFactory.Initialize(x =>
        {
            x.AddConfigurationFromXmlFile("StructureMap.xml");
        });
    }
}

StructureMap.xml 構成:

<?xml version="1.0" encoding="utf-8" ?>
<StructureMap>
    <DefaultInstance
        PluginType="SupplyOrder.Objects.Interfaces.ILoginRepository`1, SupplyOrder.Objects"
        PluggedType="SupplyOrder.Dal.UserRepository, SupplyOrder.Dal"
    />

    <DefaultInstance
        PluginType="SupplyOrder.Objects.Interfaces.ILoginService, SupplyOrder.Objects"
        PluggedType="SupplyOrder.Service.LoginService, SupplyOrder.Service"
    />
</StructureMap>

MVC3 Web サイトを実行すると、次のエラーが表示されます。

System.TypeLoadException: Could not load type 'SupplyOrder.Dal.UserRepository' from     assembly 'SupplyOrder.Dal'.

すべてのクラスとインターフェイスが同じアセンブリにある場合は機能しますが、これらすべてを構造化された方法で保持したいと考えています。

助けてくれてありがとう、ジャニ

4

0 に答える 0