使用 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详细讨论为什么运行时数据不好,以及有哪些解决方案。
我有一个接口,为了便于讨论,我们称之为 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详细讨论为什么运行时数据不好,以及有哪些解决方案。