随笔分类 - Net基础
摘要:在讲解之前,先来看看解决方案的架构:1、在Nop.Core下的Domain里建立一个实体Category;2、在Nop.Data下的Mapping\Catatog\下建立一个数据表映射CategoryMap:using System.Data.Entity.ModelConfiguration;using Nop.Core.Domain.Catalog;namespace Nop.Data.Mapping.Catalog{ public partial class CategoryMap : EntityTypeConfiguration { public CategoryMap() { th
        阅读全文
                
摘要:目录开始Registering components控制范围和生命周期用模块结构化Autofacxml配置与.net集成深入理解Autofac指导关于词汇表激活事件在component生命周期的不同阶段使用事件。Autofac暴露三个事件接口供实例的不同阶段调用OnActivatingOnActivatedOnRelease这些事件会在注册的时候被订阅,或者被附加到IComponentRegistration 的时候?1builder.RegisterType().OnActivated(e => e.Instance.StartListening());OnActivatingcomp
        阅读全文
                
摘要:目录开始Registering components控制范围和生命周期用模块结构化Autofacxml配置与.net集成深入理解Autofac指导关于词汇表属性注入属性注入使用可写属性而不是构造函数参数实现注入。介绍如果component是一个委托,使用一个对象初始化:?1builder.Register(c => new A { B = c.Resolve() });为了提供循环依赖(就是当A使用B的时候B已经初始化),需要使用OnActivated事件接口:?1builder.Register(c => new A()).OnActivated(e => e.Instan
        阅读全文
                
摘要:目录开始Registering components控制范围和生命周期用模块结构化Autofacxml配置与.net集成深入理解Autofac指导关于词汇表Resolve的参数当注册或者检索component的时候可以使用参数传递参数给ResolveResolve接受可变长度的参数列表?1var fred = Resolve(new NamedParameter("name", "Fred"));如果是通过反射注册的,这样做可以自动映射到类中指定对应参数的构造函数。比如:?1234class Person{public Person(string nam
        阅读全文
                
摘要:目录开始Registering components控制范围和生命周期用模块结构化Autofacxml配置与.net集成深入理解Autofac指导关于词汇表元数据Autofac提供机制去创建和使用component的元数据如果你熟悉Managed Extensibility Framework (MEF) ,你很可能已经见过component元数据的例子。元数据是存储component中的关于这个component的信息,不需要创建实例也能访问。在注册的时候添加元数据值描述的元数据在注册阶段和component联系起来,每个元数据都是一个键值对:?123builder.Register(c =
        阅读全文
                
摘要:目录开始Registering components控制范围和生命周期用模块结构化Autofacxml配置与.net集成深入理解Autofac指导关于词汇表循环依赖循环依赖是指运行期间对象之间的相互依赖介绍构造函数/属性依赖使用含有属性依赖的类时,使用Activated事件的InjectUnsetProperties。?12345678910111213class DependsByCtor{public DependsByCtor(DependsByProp dependency) { }}class DependsByProp{public DependsByCtor Dependency
        阅读全文
                
摘要:目录开始Registering components控制范围和生命周期用模块结构化Autofacxml配置与.net集成深入理解Autofac指导关于词汇表关系类型Autofac提供拆箱即用的关系类型。Autofac会对下面列出的关系类型特别解释。下面列出的每一种关系类型,Autofac都会在需要的时候提供一种默认实现。比如说,当Autofac会 IEnumerable 类型的构造函数参数进行注入时,它不会寻找提供 IEnumerable 的component,而是容器会找出所有的ITasks实现然后全部注入。(你可以显示注册这些类型的实现来覆盖默认行为)RelationshipTypeMea
        阅读全文
                
摘要:目录开始Registering components控制范围和生命周期用模块结构化Autofacxml配置与.net集成深入理解Autofac指导关于词汇表泛型给定一个开放的泛型,Autofac会提供一个具体的实现。开放的泛型类型使用泛型服务注册,给定一个服务类型和一个实现类型123public interface IRepository { }public class NHibernateRepository : IRepository { }使用RegisterGeneric配置容器123456builder.RegisterGeneric(typeof(NHibernateReposit
        阅读全文
                
摘要:目录开始Registering components控制范围和生命周期用模块结构化Autofacxml配置与.net集成深入理解Autofac指导关于词汇表适配器 和 装饰器Autofac提供一些机制来实现适配器模式和装饰器模式。适配器一个适配器使用一个服务并且适配另外一个。如果一个适配器在Autofac中被注册,Autofac会为每一个适配服务的实现创建单独的适配器。这个介绍性的文章描述了适配器在Autofac中是如何实现的。装饰器装饰器像适配器一样,在其中封装了一个具体的服务的实现,但是和适配器相比,装饰器暴露出的服务和它封装的一样。这篇文章有Autofac2.4添加的支持装饰器模式的详细
        阅读全文
                
摘要:目录开始Registering components控制作用域和生命周期用模块结构化Autofacxml配置与.net集成深入理解Autofac指导关于词汇表实例生命周期实例生命周期决定的在同一个服务的每个请求中实例是如何共享的。当请求一个服务的时候,Autofac会返回一个单例 (single instance作用域), 一个新的对象 (per lifetime作用域) 或者在某种上下文环境中的单例。比如 一个线程 或者一个HTTP请求 (per lifetime 作用域)。这条规则适用于显示调用Resolve从容器中检索对象或者容器中为了满足依赖而隐式实现的对象。更深入的探讨请参考an A
        阅读全文
                
摘要:目录开始Registering components控制范围和生命周期用模块结构化Autofacxml配置与.net集成深入理解Autofac指导关于词汇表扫描autofac可以使用约定在程序集中注册或者寻找组件。发现组件autofac2可以根据用户指定的规则在程序集中注册一系列的类型,这种方法叫做convention-driven registration或者扫描。12345var dataAccess = Assembly.GetExecutingAssembly();builder.RegisterAssemblyTypes(dataAccess).Where(t => t.Nam
        阅读全文
                
摘要:目录开始Registering components控制范围和生命周期用模块结构化Autofacxml配置与.net集成深入理解Autofac指导关于词汇表自动装配从容器中可用的服务中选择一个构造函数来创造对象,这个过程叫做自动装配。 这个过程是通过反射实现的,所以实际上容器这种创造对象的行为比较适合用在配置环境中。选择构造函数autofac自动从容器中选择参数最多的构造函数。如果想要选择一个不同的构造函数,就需要在注册的时候指定它。1builder.RegisterType(typeof(MyFoo)).UsingConstructor(typeof(int));这个例子通过使用MyFoo(
        阅读全文
                
摘要:目录开始Registering components控制范围和生命周期用模块结构化Autofacxml配置与.net集成深入理解Autofac指导关于词汇表服务类型,名称和键同一个服务的不同实现可以以类型,名称和键区分。autofac提供三种典型的方式区分服务。按类型类型是描述服务的基本方法1builder.Register().As();这个例子将IDeviceState 类型的服务和OnlineState 的component联系起来。可以用这个服务的类型来检索OnlineState的实例:1var r = container.Resolve();指定类型的服务在自动装配中也会起作用。按名
        阅读全文
                
摘要:目录开始Registering components控制范围和生命周期用模块结构化Autofacxml配置与.net集成深入理解Autofac指导关于词汇表Registering componentsComponentCreationhttp://code.google.com/p/autofac/wiki/ComponentCreationautofac容器提供多个内置参数用来创造Component。Component可以通过两种方式被创建:lambda表达式(通过反射)提供一个现成的实例ContainerBuilder 提供了 Register() 一类的方法去创建 Component。C
        阅读全文
                
摘要:目录开始注册组件控制范围和生命周期用模块结构化Autofacxml配置与.net集成深入理解Autofac指导关于词汇表开始程序集如果你正在使用Nuget包管理器,你可以通过“Add Library Reference”对话框将AutoFac添加到你的项目中,可用的程序集有:Autofac (base assemblies for .NET and Silverlight along with the WCF and MEF integrations)Autofac.Mvc2 (ASP.NET MVC2 web application support)Autofac.Web (ASP.NET 
        阅读全文
                
摘要:采用 EventHandler 模式发布事件 (如果不需要与事件一起发送自定义数据,请跳过此步骤,进入步骤 3a。)在发行者类和订阅方类均可看见的范围中声明自定义数据的类。 然后添加保留您的自定义事件数据所需的成员。 在此示例中,会返回一个简单字符串。 public class CustomEventArgs : EventArgs { public CustomEventArgs(string s) { msg = s; } private string msg; public string Message { get { return msg; } } } (如果您使用的是 Event..
        阅读全文
                
摘要:近来发现很多ASP.NET MVC的例子中都使用了Repository模式,比如Oxite,ScottGu最近发布的免费的ASP.NET MVC教程都使用了该模式。就简单看了下。在《企业架构模式》中,译者将Repository翻译为资源库。给出如下说明:通过用来访问领域对象的一个类似集合的接口,在领域与数据映射层之间进行协调。在《领域驱动设计:软件核心复杂性应对之道》中,译者将Repository翻译为仓储,给出如下说明:一种用来封装存储,读取和查找行为的机制,它模拟了一个对象集合。使用该模式的最大好处就是将领域模型从客户代码和数据映射层之间解耦出来。我们来看下在LinqToSql中如何应用该
        阅读全文
                
摘要:http://www.cnblogs.com/xray2005/category/189491.htmlhttp://kb.cnblogs.com/zt/ef/http://www.cnblogs.com/wlflovenet/archive/2011/07/23/mvcandef.htmlhttp://www.cnblogs.com/carysun/archive/2009/03/20/repository.htmlhttp://www.cnblogs.com/imythu/archive/2012/06/11/mvc-ef-design3.htmlhttp://www.codeprojec
        阅读全文
                
摘要:http://www.cnblogs.com/wolegequ/archive/2012/06/03/2532605.html
        阅读全文
                
摘要:(1)意图将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。(2)适用性1. 当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式;2. 当构造过程必须允许构造的对象有不同的表示; (3)结构(4)参与者 Builder:为创建一个Product对象的各个部件指定抽象接口 ConcreteBuilder:1. 实现Builder的接口以构造和装配该产品的各个部件 2. 定义并明确它所创建的表示 3. 提供一个检索产品的接口 Director:构造一个使用Builder接口的对象 Product:1.表示被构造的复杂对象。Concret...
        阅读全文
                
 
                    
                     
                    
                 
                    
                
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号