BoDi容器无法解析ITestInterface<BaseInfo>接口问题求助
BoDi容器无法解析泛型接口依赖问题
错误信息
BoDi.ObjectContainerException : 无法解析接口: Test.Helpers.IMDSInterface`1[[Test.Info.BaseInfo, Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] (解析路径: Test.StepDefinitions)
代码结构
BaseInfo.cs
public abstract class BaseInfo { public abstract string GetMessage(); }
ConcreteA.cs
public class ConcreteA : BaseInfo { public override string GetMessage() { return "ConcreteA"; } } public class ConcreteB : BaseInfo { public override string GetMessage() { return "ConcreteB"; } }
ITestInterface.cs
public interface ITestInterface<out T> { IEnumerable<T> Translate(Table info); }
ClassA.cs
public class ClassA : ITestInterface<ConcreteA> { public Type InterfaceType => typeof(ConcreteA); public IEnumerable<ConcreteA> Translate(Table info) { return info.CreateSet<ConcreteA>(new InstanceCreationOptions { VerifyAllColumnsBound = true }); } }
ClassB.cs
public class ClassB : ITestInterface<ConcreteB> { public Type InterfaceType => typeof(ConcreteB); public IEnumerable<ConcreteB> Translate(Table info) { return info.CreateSet<ConcreteB>(new InstanceCreationOptions { VerifyAllColumnsBound = true }); } }
Hooks.cs
[Binding] public sealed class Hooks { public readonly IObjectContainer _objectContainer; public Hooks(IObjectContainer objectContainer) { _objectContainer = objectContainer; ConfigureA(); } [BeforeScenario("forA", Order = 1)] public void ConfigureA() { _objectContainer.RegisterTypeAs<ClassA, ITestInterface<ConcreteA>>(); } [BeforeScenario("forB", Order = 1)] public void ConfigureB() { _objectContainer.RegisterTypeAs<ClassB, ITestInterface<ConcreteB>>(); } }
StepsDefinitions.cs
namespace Test { [Binding] public class StepDefinitions { private readonly ITestInterface<BaseInfo> _mdsClassA; public StepDefinitions(ITestInterface<BaseInfo> mdsClassA) { _mdsClassA = mdsClassA; } } }
已尝试操作
我已使用IsRegistered<..>方法检查接口注册状态,但问题仍未解决,恳请帮忙排查。
内容的提问来源于stack exchange,提问作者Eric Bosch
相关产品推荐
相关产品推荐

