【发布时间】:2016-06-01 03:49:54
【问题描述】:
我有一个基本的Dto 类型,其中有几个通用逻辑和代码(更改通知、验证等)。由于技术原因,每当我必须创建像 PersonDTO 这样的具体 DTO 类型的实例时,我都必须使用工厂方法。
var personDto = Dto.Create<PersonDTO>();
// or a non-generic variant like
var personDto = Dto.Create(typeof(PersonDTO));
现在,当我需要注入任何Dto 后代时,我怎么能要求 Ninject 使用这个工厂方法?我的意思是像
Bind<Dto>().ToMethod(ctx => Dto.Create(ctx.Request.Service));
但它不仅可以应用于基本的Dto 请求,还可以应用于任何Dto 后代类型的每个请求。
我知道我可能会使用约定 Ninject 扩展的“for all ...”类型的功能,但如果可能的话,我更喜欢没有另一个库的方法。
【问题讨论】:
-
后来我意识到我的问题在语义上并不完全正确,因为工厂方法应该有可选的参数来传递给具体的构造函数。但是,关于 Ninject 的技术问题仍然有效,所以我暂时保持原帖不变。
标签: c# ninject factory-method