zoukankan      html  css  js  c++  java
  • StructureMap 使用的实例构造函数是程序运行时确定的配置方法

      .net下IOC框架StructureMap的使用介绍比较多,这里不作介绍。未入门的请移步StructureMap介绍

    在项目里面我们一般实现的接口类的构造函数具有参数。例如:

    using System;
    using System.Text;

    namespace Dynamic.BLL.Interface
    {

     public interface IModuleFactory
        {
    
       string Do();
        }
    }

    namespace Dynamic.BLL.Libs
    {

    public class ModuleCreatorTest : IModuleFactory
        {
            public int OrgRuleId { get; set; }
    
    
            public ModuleCreatorTest(int orgRuleId)
            {
                OrgRuleId = orgRuleId;
    
            }
    
         pubic   string Do()
       {
         return OrgRuleId ;
        }
      }
    }

    这里我使用APPSetting配置文档进行配置:

    <configuration>
      <configSections>
        <section name="StructureMap" type="StructureMap.Configuration.StructureMapConfigurationSection,StructureMap"/>
      </configSections>
      <StructureMap MementoStyle="Attribute">
    
        <!--ModuleCreatorTest-->
      <DefaultInstance PluginType="Dynamic.BLL.Interface.IModuleFactory,Dynamic.BLL.Interface" PluggedType="Dynamic.BLL.Libs.ModuleCreatorTest,Dynamic.BLL.Libs" Scope="PerRequest" orgRuleId="1"/>
     </StructureMap>
    </configuration>

    在具体使用的时候我们需要创建一个IDictionary<string,object>对象传入构造函数的参数。

       var cons = new Dictionary<string, object> {{"orgRuleId", 2}};
              IModuleFactory moduleFactory =
                  StructureMap.ObjectFactory.GetInstance<IModuleFactory>(
                      new ExplicitArguments(cons));
  • 相关阅读:
    Centos系统python2.x升级python3.x
    VirtualBox安装Ghost XP
    VirtualBox检查更新失败解决办法
    PyDev+eclipse的编码问题
    redhat开启linux server
    使用VNC实现多用户登录linux系统
    使用webdav实现文档共享
    各类软件使用说明
    linux安装apache软件的过程
    JavaScript获取DOM元素位置和尺寸大小
  • 原文地址:https://www.cnblogs.com/xmax130/p/5527068.html
Copyright © 2011-2022 走看看