如果我有接口interfaceA
public interface IInterfaceA
{
void MethodA();
void MethodB();
}
我有classA
class ClassA:IInterfaceA
{
public void MethodA()
{
}
public void MethodB()
{
}
}
我可以使用ninject的绑定,但是当我有一个叫做MethodC的方法时,我认为该方法应该只存在于classA中(仅适用于classA),不应该是在InterfaceA中定义,所以如何在调用时使用ninject' bind:
var a = _kernel.get<IInterfaceA>()
我应该将结果转换为ClassA吗? (这是一个糟糕的习惯吗?)还是有另一种解决方案
答案 0 :(得分:1)
通常,当您需要接口分离但需要两个接口由同一对象实现时,这是必需的,因为它保存与两个接口相关的数据。如果不是这种情况,您可以完全分离和接口 - 然后您应该这样做。 为简单起见,我将使用Singleton Scope,但您也可以使用任何其他范围。
改为创建两个接口:
public interface IInterfaceA {
{
void MethodA();
}
public interface IInterfaceC {
void MethodC();
}
public class SomeClass : IInterfaceA, IInterfaceC {
....
}
IBindingRoot.Bind<IInterfaceA, IInterfaceB>().To<SomeClass>()
.InSingletonScope();
var instanceOfA = IResolutionRoot.Get<IInterfaceA>();
var instanceOfB = IResolutionRoot.Get<IInterfaceB>();
instanceOfA.Should().Be(instanceOfB);
这会回答你的问题吗?