Giter Site home page Giter Site logo

farseer.net.di's Introduction

官方地址:http://www.cnblogs.com/steden/ 官方QQ群:116228666 (Farseer.net开源框架交流) 请注明:博客园

Farseer.Net.DI

Farseer.Net.DI是一个轻量级、高性能的IoC容器,用于解耦和管理类之间的依赖关系。

######使用 /// 初始化容器 IFarseerContainer container = new FarseerContainer();

 ///  创建注册器
 IDependencyRegister register = container.CreateRegister();
 
 ///  注册类型
 register.RegisterType<IUserRepository, UserRepository>();
 
 ///  创建解析器
 using (IDependencyResolver resolver = container.CreateResolver())
 {
 
     ///  解析类型
     IUserRepository repository = resolver.Resolve<IUserRepository>();
 }

######依赖注册

///  使用类型注册
register.RegisterType<IUserRepository, UserRepository>();

///  使用类型实例注册
register.RegisterInstance<IUserRepository>(new UserRepository());

///  使用委托注册
register.RegisterDelegate<IUserRepository, UserRepository>(
    resolver =>
    {
        return new UserRepository();
    });
    
///  注册指定程序集包含的所有类型
register.RegisterAssembly(Assembly.GetExecutingAssembly());

///  注册指定程序集中实现特定接口的所有类型
register.RegisterAssembly<IDependency>(Assembly.GetExecutingAssembly());

///  注册指定程序集中遵循命名约定的所有类型
register.RegisterAssembly(Assembly.GetExecutingAssembly(), "Service");

///  注册程序集中所有符合过滤条件的类型
register.RegisterAssembly(Assembly.GetExecutingAssembly(), type => type.IsClass);

######生命周期

///  每次解析创建一个新的实例
register.RegisterType<IUserRepository, UserRepository>().AsTransientLifetime();

///  在容器中为单例
register.RegisterType<IUserRepository, UserRepository>().AsSingletonLifetime();

///  在同一作用域中为单例
register.RegisterType<IUserRepository, UserRepository>().AsScopedLifetime();

######依赖解析

///  解析实现特定接口的类型
IUserRepository repository = resolver.Resolve<IUserRepository>();

///  解析实现特定接口的所有类型
IEnumerable<IDependency> dependencys = resolver.ResolveAll<IDependency>();

######作用域

using (IDependencyResolver resolver = container.CreateResolver())
{
    ///  创建作用域解析器
    using (IScopedResolver scoped = resolver.CreateScopedResolver())
    {
        IUserRepository repository = scoped.Resolve<IUserRepository>();
    }
}

######自动属性注入

public class UserRepository : IUserRepository
{
    public ILogger Logger { get; set; }
}

///  作为自动注入的属性
register.RegisterType<ILogger, Logger>().AsPropertyDependency();

register.RegisterType<IUserRepository, UserRepository>();
using (IDependencyResolver resolver = container.CreateResolver())
{
    ///  解析依赖,属性自动注入
    IUserRepository repository = resolver.Resolve<IUserRepository>();
}

######忽略自动属性

 public class UserRepository : IUserRepository
 {
    ///IgnoreDependency标记的属性将不会被自动注入
    [IgnoreDependency]
    public ILogger Logger { get; set; }
 }

farseer.net.di's People

Contributors

liuhaoyang avatar steden avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.