【发布时间】:2019-10-26 06:26:38
【问题描述】:
在我的子模块中,我有:
public class CustomerRepository : ICustomerRepository
{
private readonly IDBEngine _dbEngine;
[CanBeNull] private readonly string _overriddenDebugEmail;
[Obsolete("Use the other constructor")]
public CustomerRepository(IDBEngine dbEngine)
{
_dbEngine = dbEngine;
_overriddenDebugEmail = null;
}
// ReSharper disable once UnusedMember.Global
public CustomerRepository(IDBEngine dbEngine, IDebugConstants debugConstants)
{
_dbEngine = dbEngine;
_overriddenDebugEmail = debugConstants.OverridingDebugEmail;
}
...
问题是,当我简单地更新子模块而不实现 IDebugConstants 时,我得到以下运行时错误:
激活 IDebugConstants 时出错
没有匹配的绑定可用,并且类型不是自绑定的。
如果没有实现 IDebugConstants,我希望 Ninject 绑定到 Obsolete 构造函数。但它拒绝因为过时的属性。 理论上,我可以删除 Obsolete 属性,但我希望它表明,一旦使用子模块的所有旧程序都已更新,该代码将不再存在。
有没有办法让 Ninject 忽略 Obsolete 属性?
或者我是否以某种方式完全错了?
【问题讨论】: