Ninject

.NET 依赖性注入器的 "忍者"(ninja)。「the ninja of .net dependency injectors」

  • 所有者: ninject/Ninject
  • 平台:
  • 許可證: Other
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

Ninject

Build status
codecov
NuGet Version
NuGet Downloads

Ninject is a lightning-fast, ultra-lightweight dependency injector for .NET applications. It helps you split your
application into a collection of loosely-coupled, highly-cohesive pieces, and then glue them back together in a
flexible manner. By using Ninject to support your software's architecture, your code will become easier to write,
reuse, test, and modify.

Write your code so it's flexible...

public class Samurai {
    public IWeapon Weapon { get; private set; }
    public Samurai(IWeapon weapon) 
    {
        this.Weapon = weapon;
    }
}

...and let Ninject glue it together for you.

public class WarriorModule : NinjectModule
{
    public override void Load() 
    {
        this.Bind<IWeapon>().To<Sword>();
    }
}

Features:

  1. Focused. Too many existing dependency injection projects sacrifice usability for features that aren't often necessary.
    Each time a feature is added to Ninject, its benefit is weighed against the complexity it adds to everyday use. Our goal
    is to keep the barrier to entry - the baseline level of knowledge required to use Ninject - as low as possible. Ninject
    has many advanced features, but understanding them is not required to use the basic features.

  2. Sleek. Framework bloat is a major concern for some projects, and as such, all of Ninject's core functionality is in a
    single assembly with no dependencies outside the .NET base class library. This single assembly's footprint is approximately
    85KB when compiled for release.

  3. Fast. Instead of relying on reflection for invocation, Ninject takes advantage of lambda expression build system.
    This can result in a dramatic (8-50x) improvement in performance in many situations.

  4. Precise. Ninject helps developers get things right the first time around. Rather than relying on XML mapping files and
    string identifiers to wire up components, Ninject provides a robust domain-specific language. This means that Ninject
    takes advantage of the capabilities of the language (like type-safety) and the IDE (like IntelliSense and code completion).

  5. Agile. Ninject is designed around a component-based architecture, with customization and evolution in mind. Many facets
    of the system can be augmented or modified to fit the requirements of each project.

  6. Stealthy. Ninject will not invade your code. You can easily isolate the dependency on Ninject to a single assembly in
    your project.

  7. Powerful. Ninject includes many advanced features. For example, Ninject is the first dependency injector to support
    contextual binding, in which a different concrete implementation of a service may be injected depending on the context in
    which it is requested.

Everything else is in Extensions

Yes, sounds slim and focused, but where is the support for all the features that the competitors have?

Generally, they are maintained as specific focused extensions with owners who keep them in sync and pull in new ideas and fixes fast. These are summarized on the extensions section of the project website. Most are hosted alongside the core project right here.

License

Ninject is intended to be used in both open-source and commercial environments. To allow its use in as many
situations as possible, Ninject is dual-licensed. You may choose to use Ninject under either the Apache License,
Version 2.0, or the Microsoft Public License (Ms-PL). These licenses are essentially identical, but you are
encouraged to evaluate both to determine which best fits your intended use.

Refer to LICENSE.txt for detailed information.

Changes history

Resources

主要指標

概覽
名稱與所有者ninject/Ninject
主編程語言C#
編程語言C# (語言數: 1)
平台
許可證Other
所有者活动
創建於2009-03-07 19:04:25
推送於2024-06-14 01:19:58
最后一次提交2022-04-17 09:05:04
發布數28
最新版本名稱4.0.0-beta.1 (發布於 2022-10-05 11:04:17)
第一版名稱2.0.0.0 (發布於 2010-03-08 08:17:30)
用户参与
星數2.7k
關注者數161
派生數532
提交數837
已啟用問題?
問題數288
打開的問題數84
拉請求數88
打開的拉請求數6
關閉的拉請求數23
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?