이것은 일반적인 질문이지만 현재 겪고있는 문제와 관련이 있습니다. 현재 솔루션에 지정된 인터페이스가 있습니다.
public interface IContextProvider
{
IDataContext { get; set; }
IAreaContext { get; set; }
}
이 인터페이스는 프로그램 전체에서 자주 사용되므로 필요한 개체에 쉽게 액세스 할 수 있습니다. 그러나 프로그램의 상당히 낮은 수준에서 IAreaContext 를 사용 하고 일부 작업을 수행 하는 다른 클래스에 액세스해야 합니다. 그래서이 창조를 위해 또 다른 팩토리 인터페이스를 만들었습니다.
public interface IEventContextFactory
{
IEventContext CreateEventContext(int eventId);
}
IContextProvider 를 구현하고 NinJect를 사용하여 주입 되는 클래스가 있습니다. 내가 가진 문제는이 IEventContextFactory 를 사용해야하는 영역 은 IContextProvider 에만 액세스 할 수 있으며 자체적 으로이 새로운 인터페이스가 필요한 다른 클래스를 사용한다는 것입니다. 이 IEventContextFactory 구현을 낮은 수준 으로 인스턴스화 하고 싶지 않고 전체적으로 IEventContextFactory 인터페이스 와 함께 작동 합니다. 그러나 나는 또한 그것을 필요로하는 클래스에 전달하기 위해 생성자를 통해 다른 매개 변수를 주입하고 싶지 않습니다.
// example of problem
public class MyClass
{
public MyClass(IContextProvider context, IEventContextFactory event)
{
_context = context;
_event = event;
}
public void DoSomething()
{
// the only place _event is used in the class is to pass it through
var myClass = new MyChildClass(_event);
myClass.PerformCalculation();
}
}
그래서 내 주요 질문은 이것이 수용 가능 할까, 아니면 이와 같은 것을하는 것이 일반적이거나 좋은 습관인지입니다 (인터페이스는 다른 인터페이스를 확장합니다).
public interface IContextProvider : IEventContextFactory
또는 내가 원하는 것을 달성하기위한 더 나은 대안을 고려해야 하는가? 제안을 제공하기에 충분한 정보를 제공하지 않은 경우 알려 주시면 더 많은 정보를 제공 할 수 있습니다.