LightInject 入门

2024-04-13

我喜欢LightInject 的基准测试 http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison;他们疯了!太棒了,你应该写一本关于 .Net 性能的书,我是认真的。

我看到文档 http://www.lightinject.net.

我安装了dll。按照那一步就ok了。

然后文档的下一步假设我有一个container目的。

container.Register<IFoo, Foo>();
var instance = container.GetInstance<IFoo>();
Assert.IsInstanceOfType(instance, typeof(Foo));

哎呀!当然,我可能不是盒子里最敏锐的绘儿乐,但我现在该怎么办?我应该创建什么类和方法来“设置”以便我可以遵循其余示例? (我想我最好对其进行设置,以便它在整个项目中发挥作用)

顺便说一句:如果没有明确地在文档中添加这些步骤,那么通过引用其他“手册页”会是错误的吗?也许有多种获取容器的方法;我不太了解我需要哪一个。此时,我在文档中只是寻找“这适用于 90% 的情况”示例,以及指向更特殊案例的链接。

Thanks!


你应该可以走了。 IFoo 是你的接口,Foo 是具体的实现。你应该能够做任何你想做的事。本教程只是向您展示 DI 需要什么。例如,在 IFoo 中创建方法 DoStuff,在 Foo 中实现它,然后调用它:“instance.DoStuff();”

就像是:

using LightInject;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var container = new ServiceContainer();
            container.Register<IFoo, Foo>();
            container.Register<IBar, Bar>();
            var foo = container.GetInstance<IFoo>();
            foo.DoFooStuff();
        }
    }

    public interface IFoo
    {
        void DoFooStuff();
    }

    public class Foo : IFoo
    {
        // this property is automatically populated!
        public IBar MyBar { get; set; }

        public void DoFooStuff()
        {
            MyBar.DoBarStuff();
            Console.WriteLine("Foo is doing stuff.");
        }
    }

    public interface IBar
    {
        void DoBarStuff();
    }

    public class Bar : IBar
    {
        public void DoBarStuff()
        {
            Console.WriteLine("Bar is doing stuff.");
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LightInject 入门 的相关文章

  • 为什么基类必须有一个带有 0 个参数的构造函数?

    这不会编译 namespace Constructor0Args class Base public Base int x class Derived Base class Program static void Main string a
  • 当我单击 C# 中的“取消”按钮时重定向到新页面(Web 部分)

    Cancel button tc new TableCell btnCancel new Button btnCancel Text Cancel btnCancel Click new EventHandler btnCanel Clic
  • 通信对象 System.ServiceModel.Channels.ServiceChannel 不能用于通信

    通信对象System ServiceModel Channels ServiceChannel 无法用于通信 因为它处于故障状态 这个错误到底是什么意思 我该如何解决它 您收到此错误是因为您让服务器端发生 NET 异常 并且您没有捕获并处理
  • 在 C++11 中省略返回类型

    我最近发现自己在 C 11 模式下的 gcc 4 5 中使用了以下宏 define RETURN x gt decltype x return x 并编写这样的函数 template
  • 如何在 VS 中键入时显示方法的完整文档?

    标题非常具有描述性 是否有任何扩展可以让我看到我正在输入的方法的完整文档 我想查看文档 因为我可以在对象浏览器中看到它 其中包含参数的描述和所有内容 而不仅仅是一些 摘要 当然可以选择查看所有覆盖 它可能是智能感知的一部分 或者我不知道它并
  • C++派生模板类继承自模板基类,无法调用基类构造函数[重复]

    这个问题在这里已经有答案了 我试图从基类 模板 继承 派生类也是模板 它们具有相同的类型 T 我收到编译错误 非法成员初始化 Base 不是基类或成员 为什么 如何调用基类构造函数 include
  • 单元测试失败,异常代码为 c0000005

    我正在尝试使用本机单元测试项目在 Visual Studios 2012 中创建单元测试 这是我的测试 TEST METHOD CalculationsRoundTests int result Calculations Round 1 0
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • 从 Orchard 内的主题渲染图像

    我刚刚选择 Orchard 来构建我的博客 作为创建这个新博客的努力的一部分 我正在创建一个自定义主题 这个自定义主题同时具有 CSS 和图像 我的问题 我的问题基本上可以归结为 如何渲染属于主题一部分的图像 到目前为止我已经尝试过的 我尝
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我
  • “MyClass”的类型初始值设定项引发异常

    以下是我的Windows服务代码 当我调试代码时 我收到错误 异常 CSMessageUtility CSDetails 的类型初始值设定项引发异常 using System using System Collections Generic
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • 如何排列表格中的项目 - MVC3 视图 (Index.cshtml)

    我想使用 ASP NET MVC3 显示特定类型食品样本中存在的不同类型维生素的含量 如何在我的视图 Index cshtml 中显示它 an example 这些是我的代码 table tr th th foreach var m in
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • Swagger 为 ASP.CORE 3 中的字典生成错误的 URL

    当从查询字符串中提取的模型将字典作为其属性之一时 Swagger 会生成不正确的 URL 如何告诉 Swagger 更改 URL 中字典的格式或手动定义输入参数模式而不自动生成 尝试使用 Swashbuckle 和 NSwag 控制器 pu

随机推荐

  • 本地主机上使用 DotNetOpenAuth 的 OpenID 提供程序

    我在本地运行 DotNetOpenAuth 示例提供程序 它似乎可以通过 Web 浏览器正确处理请求 我可以在调试器中单步执行授权处理程序 我有一个项目可以通过 Google 和其他提供商进行身份验证 但无法通过示例提供商进行身份验证 示例
  • 使用 VBA 将唯一编号添加到 Excel 数据表

    我有两列数字 它们在一起将是唯一的 复合键 我想创建一个唯一的 ID 号 第三列 类似于 MS Access 使用主键的方式 我想在 VBA 中执行此操作 但我不知道如何执行此操作 我的 Excel 中的 VBA 不太好 所以希望您能看到我
  • iOS NSBlock的NSMethodSignature(或编码)

    我需要一种方法来在运行时检查给定块的参数数量和参数类型 我当前正在编写的某些对象映射库需要这个 我将字符串格式的值映射到选择器 希望块也如此 我尝试了下面示例中的代码 但由于某种原因它对我不起作用并且返回 nil 字符串描述 你知道一种在运
  • 如何在 Ubuntu 中注册文件关联

    我正在创建 Ubuntu 安装程序 我需要注册自己的文件扩展名 但我找不到任何有关如何执行此操作的示例 人们可以为我提供一些关于如何执行此操作的脚本片段吗 注意 我正在使用安装干扰器 http www installjammer com 帮
  • 带有heredocs的Python子进程

    我正在使用 Python 的子进程模块 尝试了一些示例 但我似乎无法让 Heredoc 语句发挥作用 这是我正在玩的一个简单的例子 import subprocess a A String of Text p subprocess Pope
  • 转换回原始类时出现 ClassCastException 错误

    我有以下代码 public void doJob MyObj s for Object o MyObj all fetch s MyObj o ClassCastException here if s fileExists Do some
  • 在 x86-64 上,“movnti”指令是原子指令吗?

    在 x86 64 CPU Intel 或 AMD 上 将 4 8 字节写入 32 64 位对齐地址的 movnti 指令是原子的吗 Yes movnti在自然对齐的地址上是原子的 就像 x86 上所有其他自然对齐的 8 16 32 64b
  • 在您自己的应用程序中直观地包含另一个应用程序

    我有四个用 Delphi Win32 编写的小型单一形式实用程序应用程序 每隔一段时间我就想以一种让它们 感觉 起来好像它们都是一个应用程序的方式使用它们 主要是为了切换回来他们之间的来回非常容易 例如 如果能够将它们作为容器插入 TabS
  • npm 错误 semver 无效

    刚刚从源代码安装了 Node js v 0 10 20 目标盒 Ubuntu 12 04 3 LTS 节点安装正常 没有错误 毕竟看起来 node v v0 10 20 npm v 1 3 11 但只是列出我的 g 模块 我收到一些我无法弄
  • 如何使用 Graph API 从 Facebook 评论字段获取

    我使用 comment id 获取 from 字段并使用页面访问令牌 comment id fields from access token PAGE ACCESS TOKEN 但我没有得到所需的输出 我只得到评论 ID id commen
  • 如何在 IE7 中将绝对定位的 div 居中?

    更新了布局的提供上下文 I have a relatively simple structure for my page The page is composed of two div s both absolutely positione
  • 使用 pathlib 模块关闭文件的推荐方法?

    从历史上看 我总是使用以下内容来读取文件python with open file r as f for line in f do thing to line 这仍然是推荐的方法吗 使用以下内容是否有任何缺点 from pathlib im
  • 在C语言中,我可以通过堆栈指针访问另一个函数中主函数的局部变量吗?

    我需要访问在 main 函数中定义的变量 a 的值 而不将其作为参数传递 main int a 10 func printf d n a void func i need access of variable a here 我怎样才能做到这
  • jQuery 选择列表选项通过另一个元素 onchange 事件更改后触发事件

    我有一个选择列表 select2 每次更改另一个选择列表 select1 时 其选项都会更改 select2 的选项始终取决于 select1 的值 并且每次 select1 更改时都会更改 是否有一个函数可以绑定到 select2 元素
  • 如何在局域网上部署PHP应用程序? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是一名网页设计师和 PHP 开发人员 我用 PHP 创建了一些网站 并将它们部署到来自不同供应商 如 GoDaddy Yahoo M
  • java.lang.IllegalArgumentException - 对话框.dismiss

    我在发布的应用程序中收到此错误 只有客户端收到此错误 我已经多次尝试复制同样的错误 但没有成功 我也已经尝试在所有有对话框的位置使用下面的代码 但也没有解决 if dialog isShowing dialog dismiss 错误报告 j
  • 箭头函数后面带()的意思是什么? [复制]

    这个问题在这里已经有答案了 const actionsMap GET USER state action gt post action msg 我有这个我偶然发现的代码 我一直在使用 格式的箭头函数 这个 包装器是什么意思 对于箭头函数 您
  • Android 浏览器忽略响应式网页设计

    我刚刚开始将我的网站转换为 响应式网页设计 我安装了 Firefox 的 Web Developer 插件 http chrispederick com work web developer http chrispederick com w
  • 如何在django中使用子查询?

    我想获取每个客户最新购买的列表 按日期排序 以下查询执行我想要的操作 除了日期之外 Purchase objects all distinct customer order by customer date 它会生成如下查询 SELECT
  • LightInject 入门

    我喜欢LightInject 的基准测试 http www palmmedia de blog 2011 8 30 ioc container benchmark performance comparison 他们疯了 太棒了 你应该写一本