将 AutoFac 设置为默认使用 PropertiesAutowired(true) 吗?

2024-04-25

有没有办法我可以将 AutoFac 设置为使用 PropertiesAutowired(true) 作为所有注册类型的默认值。

即我不想一直使用“.Properties Autowired(true)”

var builder = new ContainerBuilder();
builder.RegisterType<Logger>()
    .PropertiesAutowired(true)
    .SingleInstance();

这可以通过模块来完成,例如

class InjectPropertiesByDefaultModule : Autofac.Module {
    protected override void AttachToComponentRegistration(
        IComponentRegistration registration,
        IComponentRegistry registry) {
            registration.Activating += (s, e) => {
                e.Context.InjectProperties(e.Instance);
            };
    }
}

Then:

builder.RegisterModule<InjectPropertiesByDefaultModule>();

我想你可能误解了true参数为PropertiesAutowired- 它决定如何支持循环依赖并且可能应该保留false。为了效仿true您可以附加到的设置Activated代替Activating above.

但是,如果可能的话,即使对于像您这样的“可选”依赖项也可以使用构造函数注入ILog。它会导致更清洁的组件(例如,可以将字段readonly)和依赖项更容易理解(它们都在构造函数中,并且无需猜测各个属性的含义。)

仅当应用程序有多种配置并且在某些配置中真正不存在依赖性时才考虑使用属性注入。

即使在这些情况下,“空对象”模式通常更适合。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 AutoFac 设置为默认使用 PropertiesAutowired(true) 吗? 的相关文章

  • 列表:Count 与 Count() [重复]

    这个问题在这里已经有答案了 给定一个列表 首选哪种方法来确定内部元素的数量 var myList new List
  • 在 WPF 字体大小和“标准”字体大小之间转换

    我注意到在 WPF 中 12 磅的默认字体大小大致相当于 普通 应用程序 例如写字板 中的 9 磅 WPF 中的 10 磅大约是 7 磅标准 当我尝试匹配默认字体大小时在WPF写字板中的10 pt中 我发现13是最接近的 首先 为什么WPF
  • Word Automation - 禁用警报

    我正在自动化 Word 因此我想抑制所有警报 Word Application word new Word Application word DisplayAlerts Microsoft Office Interop Word WdAle
  • 使用正则表达式或其他解析从文件中读取值

    我有一个记录带有时间戳的值的文件 我必须在特定时间后读取特定值 例如 文件有 2013 03 03 19 08 22 car 2001 Ford 2013 03 03 19 08 27 Truck 2012 Chevy 2013 03 03
  • ServiceStack 验证并不总是触发

    因此 我尝试使用 RavenDB 和 ServiceStack 构建端到端集成测试套件 但遇到了一个非常奇怪的问题 即验证无法对某些请求运行 这真的很奇怪 我不确定我做错了什么 我正在使用 NCrunch 有时测试通过 有时失败 希望这是一
  • Task.Delay 是否真的像 I/O 操作一样异步,即它依赖于硬件和中断而不是线程?

    我发现了大量相关内容 但这些内容都是拐弯抹角的 但我始终无法找到答案 我几乎 100 确定Task Delay int 不使用线程 因为我可以在只有 16 个逻辑处理器的机器上运行此代码 var tasks new List
  • Xamarin 中 QR 扫描后的处理对话框

    我在Xamarin应用程序中使用QR码扫描仪 当它扫描QR码时 它会执行一些操作 大约需要一分钟 而在执行操作时 我想在屏幕上显示一个加载对话框 但是 它没有显示在屏幕上 并且在应用程序的其他地方 它运行得很好 Code var expec
  • VC++ 代码 DOM 可以从 VS 插件访问吗?

    Visual Studio IntelliSense for VC 包括 完整 EDG C 解析器 http www edg com location c frontend 英特尔和其他公司也使用 由于插件可以访问 C Code DOM 如
  • 将无限范围的值映射到 10 种颜色?

    我有以下 10 种颜色的列表 public static readonly IList
  • 如何在C#中获取登录SID

    如何在 C net 中检索 Windows 登录 SID 不是用户 SID 而是每个会话的唯一新 SID 恐怕您必须求助于使用 P Invoke 有一个如何做到这一点的示例pinvoke net http www pinvoke net d
  • ComponentOne 3D 曲面地图的替代方案 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们正在为我们正在进行的一个新项目研究替代控制库 要求之一是以表面图的形式显示数据 如下面的 Comp
  • Winforms Chart - 在折线图上绘制允许的区域

    如何在图表上绘制灰色区域 信号的允许范围 我使用 Winforms 和标准 MicrosoftSystem Windows Forms DataVisualization类 它应该是自定义范围 这意味着起始 Y 点不能仅为零 我在运行时在线
  • RadioButton 和 DropDownList 的 MVC 服务器端验证

    使用 ASP NET Core 2 2 Razor Pages 我正在探索将单选按钮和下拉列表绑定到页面模型 很多人都在询问客户端验证以 使其正常工作 我的问题是 当我查看这段代码时 绑定引擎是否正在执行任何服务器端检查 foreach v
  • 在 ASP.NET MVC 中向 Actions 发送多个参数

    我想向 ASP NET MVC 中的操作发送多个参数 我还希望 URL 看起来像这样 http example com products item 2 代替 http example com products item aspx id 2
  • log4net 未记录到数据库

    我有一个奇怪的问题 我的 log4net 设置没有将任何数据记录到数据库中 也没有引发任何异常来通知问题 我已经在一个名为 Log4net Config 的单独文件中定义了配置设置 并且 已经在程序集中引用了它 请注意 我通过 nuget
  • 如何使用静态方法最小起订量静态类(UnitOfWork 情况)?

    我有这些课程 public static class UnitOfWorkSS public static IUnitOfWork Begin return IoC Resolve
  • 如何使用 SqlDataReader 返回和使用 IAsyncEnumerable

    请看下面两种方法 第一个返回一个IAsyncEnumerable 第二个试图消耗它 using System Collections Generic using System Data using System Data SqlClient
  • CvMat 和 Imread 与 IpImage 和 CvLoadImage

    使用 OpenCv 2 4 我有两个选项来加载图像 1 CvMat and Imread 2 IpImage and CvLoadImage 使用哪一个更好 我尝试将两者混合并最终出现段错误 imread返回一个Mat not CvMat
  • 是否有与 SQL Server newsequentialid() 等效的 .NET

    我们使用 GUID 作为主键 您知道默认情况下它是集群的 将新行插入表中时 它将插入表中的随机页 因为 GUID 是随机的 这会对性能产生可衡量的影响 因为数据库始终会分割数据页 碎片 但我使用顺序 GUID 的主要原因是因为我希望将新行插
  • .NET WPF 窗口淡入和淡出动画

    下面是窗口淡入和淡出动画的代码片段 Create the fade in storyboard fadeInStoryboard new Storyboard fadeInStoryboard Completed new EventHand

随机推荐

  • Grunt watch 任务似乎需要很长时间

    我正在运行两个简单的任务 每个任务运行时间 spawn to false但这似乎破坏了它 并且没有运行任何相关的任务 以下是更改 sass 文件时的示例输出 gt gt File app styles main scss changed F
  • ggplot2堆叠条形图数据标签向后

    我想在 ggplot2 中创建一个堆积条形图 其中数据标签位于与其相关的填充区域的中心 我尝试过的代码的标签顺序与应有的顺序相反 这是代码示例 data rep lt data frame Task Number c 5 004 5 004
  • Eclipse C++ 打印漂亮吗?

    从 Eclipse 打印 C 源代码时得到的输出相当难看 是否有方法 插件可以漂亮地打印 C 源代码 例如与a2ps 这可能是对C源代码使用另一个过滤器 我也用enscript为了这 这是我经常使用的别名 alias cpp2ps ensc
  • 诊断 R 包构建错误:pdfLatex 不可用

    我正在尝试构建一个包R 我制作了骨架 并运行了命令R CMD check package1 我收到一个错误描述here https stackoverflow com questions 10819959 diagnosing r pack
  • 迁移到 Jboss 7.0 AS 后 Firefox 和 IE 中的 ViewExpiredException

    我们的 JSF 2 0 Richfaces 4 0 应用程序在 Jboss 6 0 上运行得非常好 我们正在尝试将其迁移到 Jboss 7 0 AS 对于我们点击页面上的任何链接 我们在 Firefox 和 IE 中遇到 ViewExpir
  • 如何使用 boost::spirit::qi 解析行尾?

    不应该是一个简单的eol http www boost org doc libs 1 42 0 libs spirit doc html spirit qi quick reference qi parsers auxiliary html
  • ASP NET Core 2 找不到包“Projectname.Model”的编译库位置

    在我的解决方案中 我有两个项目 其中之一是web项目 另一个是Model项目 您可以在下面看到我的解决方案结构 现在 当我运行应用程序时 出现以下错误 InvalidOperationException 找不到包 ContosoUniver
  • 如何在 GWT 中取消转义字符串

    我使用了 SafeHtmlUtils htmlEscape text 并且我想使用相反的功能 你能告诉我 gwt 中是否有像 unescapeHtml 这样的函数 如果 并且仅当 您可以相信文本不包含恶意内容 您可以使用 import co
  • 客户端验证后 RegisterOnSubmitStatement

    我需要在提交 Web 表单时但在客户端验证发生之后在流程中插入一些 Javascript RegisterOnSubmitStatement 似乎将 JavaScript 放在验证之前 有人知道如何让它渲染后吗 找到解决方案 在网络控件中
  • declarative_authorization 和命名空间

    您知道 declarative authorization 是否可以控制对命名空间资源的访问吗 我尝试过类似的东西 has permission on admin users to gt index show new create edit
  • R和matlab中的qr函数

    我有一个关于将 matlab 函数转换为 R 的问题 我希望有人能提供帮助 matlab 和 R 中使用的标准 QR 分解称为 qr 据我了解 用两种语言执行 qr 分解的标准方法是 Matlab Q R qr A 满足QR A R z l
  • PDOStatement 到 JSON [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我将如何转换PDOStatement到 JSON 我需要 jsonifyPDO FETCH OBJ json encode没有能力 j
  • 如何创建 Delphi Android 应用程序 APK 来包含文件

    如何将文件和 或包含 Android 应用程序 APK 文件的文件的文件夹包含在内 Delphi 运行过程会擦除 Assets 目录的内容 并且我放置在那里的文件 文件夹不包含在 APK 包中 我假设您必须手动将 System Startu
  • 如何在 Python 中使用 tkinter 选择目录并存储位置

    我正在创建一个带有浏览按钮的 GUI 我只想返回路径 我一直在寻找使用如下代码的解决方案 Tkinter Button subframe text Browse command self loadtemplate width 10 pack
  • 使用candlestick_ohlc显示csv

    我尝试用熊猫做第一步 经过几个成功的步骤后 我坚持执行以下任务 使用 OHLC 条显示数据 我从 Google Finance 下载了 Apple 股票的数据并将其存储到 csv 文件中 经过大量搜索 我编写了以下代码 import pan
  • 与 Socket.io 保持连接

    我正在尝试使用 asterisk websocket 连接socket io 客户端 https github com socketio socket io client socket io connect url transports w
  • 根据laravel中选定的省份获取城市列表

    如何获取基于所选省份的城市列表 我的控制器 public function index province RajaOngkir Provinsi gt all city RajaOngkir kota gt all return view
  • Intl.DateTimeFormat 给出 1847 年或以下年份的奇怪结果

    为什么我选择1848以下的年份 这种格式的结果是May 10 我有一种感觉 这可能与时区有关 如果是这样 我怎样才能避免这种情况 因为我将从 ISO 日期字符串 没有时间 创建一个日期对象 如下所示 YYYY MM DD 在 Chrome
  • 是否可以以编程方式指定

    有什么方法可以在活动 l 中以编程方式指定 in 的意思吗 因为在 Google Play 中 当用户尝试安装该应用程序时 它表示 Android 应用程序与您的 Kindle Fire 平板电脑设备不兼容 在我的应用程序中 我们使用的是地
  • 将 AutoFac 设置为默认使用 PropertiesAutowired(true) 吗?

    有没有办法我可以将 AutoFac 设置为使用 PropertiesAutowired true 作为所有注册类型的默认值 即我不想一直使用 Properties Autowired true var builder new Contain