使用 Unity,我应该如何将 "Model" 传递给已解析的类型?

Using Unity, How should I Pass a "Model" to a Resolved Type?

我有一个接口,为了便于讨论,我们称之为 IFoo,它可以处理文件。此接口的实现在其构造函数中接收 FileInfo。在我的引导程序中,我是这样设置的:

container.RegisterType<IFoo, Foo>();

问题是在解决之前我不知道我需要将哪个 FileInfo 传递给 Foo 实例。我要一个,我需要将它传递给构造函数。

我看过一些推荐使用参数覆盖和使用 container.Resolve 的旧帖子,但我知道这通常是一种不好的做法。

是否有推荐的方法来实现我需要做的事情?

TLDR:我需要能够做这样的事情,这不是不受欢迎的:

container.Resolve<IFoo>(*pass my constructor arg here*)

The problem is that I don't know which FileInfo I need to pass into the Foo instance until it is resolved.

这意味着 FileInfo 运行时数据 ,而您的应用程序组件(您的 Foo)不应需要 运行时数据施工期间。

请阅读this article详细讨论为什么运行时数据不好,以及有哪些解决方案。