私はこれで壁にぶつかっていますが、わかりません:
次のインターフェースがあります。
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'.
すべてのクラスとインターフェイスが同じアセンブリにある場合は機能しますが、これらすべてを構造化された方法で保持したいと考えています。
助けてくれてありがとう、ジャニ