0

我想在ioc中使用結構圖。IOC中的結構圖

這是我的代碼:

public class StructureMapDependencyResolverConfigurator : IDependencyResolverConfigurator 
{ 
    public static bool _isStarted = false; 

    public void Configure() 
    { 
     ObjectFactory.Initialize(x => 
     { 
      try 
      { 
       RegisterTypesFromAssembly("ImenBourse.Data", "ImenBourse.Data.AdoSql", typeof(IDaoBase), x); 
       RegisterTypesFromAssembly("ImenBourse.Data", "ImenBourse.Data.AdoSql", typeof(IQueryBase), x); 
       RegisterTypesFromAssembly("ImenBourse.Domain.Service", "ImenBourse.Domain.Impl", typeof(IServiceBase), x); 

      } 
      catch (Exception e) 
      { 

      } 
     }); 

    } 

    public IControllerFactory ControllerFactory { get { return new StructureMapControllerFactory(); } } 
    public IContainer Container { get { return ObjectFactory.Container; } } 

    private void RegisterTypesFromAssembly(string assemblyInterfaceName, string assemblyImplName, Type baseType, IInitializationExpression initializer) 
    { 
     Assembly intAssembly = Assembly.Load(assemblyInterfaceName); 
     var interfaceList = intAssembly.GetTypes().Where(assemblyType => assemblyType.IsInterface && baseType.IsAssignableFrom(assemblyType) && baseType != assemblyType).ToList(); 
     if (interfaceList.Count == 0) 
      interfaceList = intAssembly.GetTypes().Where(assemblyType => assemblyType.IsInterface && baseType != assemblyType).ToList(); 

     Assembly implAssembly = Assembly.Load(assemblyImplName); 
     var implList = implAssembly.GetTypes().Where(assemblyType => assemblyType.IsClass && baseType.IsAssignableFrom(assemblyType)).ToList(); 

     foreach (var type in interfaceList) 
     { 
      foreach (var implType in implList) 
      { 
       if (type != implType && type.IsAssignableFrom(implType)) 
       { 
        initializer.ForRequestedType(type).Use(implType); 
       } 
      } 
     } 
    } 

當我打電話RegisterTypesFromAssembly功能,此行有一個錯誤

Assembly implAssembly = Assembly.Load(assemblyImplName); 

,我看到這個錯誤:

Could not load file or assembly 'ImenBourse.Data.AdoSql' or one of its dependencies.The system cannot find the file specified. 

和ImenBourse。 Data.AdoSql程序集是:

using System.Reflection; 
using System.Runtime.CompilerServices; 
using System.Runtime.InteropServices; 

// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information 
// associated with an assembly. 
[assembly: AssemblyTitle("ImenBourse.Data.AdoSql")] 
[assembly: AssemblyDescription("")] 
[assembly: AssemblyConfiguration("")] 
[assembly: AssemblyCompany("")] 
[assembly: AssemblyProduct("ImenBourse.Data.AdoSql")] 
[assembly: AssemblyCopyright("Copyright © Microsoft 2013")] 
[assembly: AssemblyTrademark("")] 
[assembly: AssemblyCulture("")] 

是什麼錯誤在我的代碼,我有一個錯誤

+0

該文件是否存在?該進程是否有權訪問它? –

+0

是的,所有文件夾都有權限,但我看到一個錯誤 –

回答

0

嘗試添加「.DLL」在RegisterTypesFromAssembly集名稱。它似乎在尋找一個沒有擴展名的文件:

RegisterTypesFromAssembly("ImenBourse.Data", "ImenBourse.Data.AdoSql.dll", typeof(IDaoBase), x);