Unity가 객체 생성을 관리하도록 노력하고 있으며 런타임까지 알려지지 않은 초기화 매개 변수를 갖고 싶습니다.
현재 내가 생각할 수있는 유일한 방법은 인터페이스에 Init 메소드를 사용하는 것입니다.
interface IMyIntf {
void Initialize(string runTimeParam);
string RunTimeParam { get; }
}
그런 다음 (Unity에서) 사용하려면 다음과 같이하십시오.
var IMyIntf = unityContainer.Resolve<IMyIntf>();
IMyIntf.Initialize("somevalue");
이 시나리오에서 runTimeParam
매개 변수는 사용자 입력에 따라 런타임에 결정됩니다. 여기서 사소한 경우는 단순히 값을 반환 runTimeParam
하지만 실제로는 매개 변수가 파일 이름과 같으며 initialize 메소드가 파일과 관련이 있습니다.
이로 인해 여러 가지 문제가 발생합니다. 즉 Initialize
, 인터페이스 에서 메소드를 사용할 수 있으며 여러 번 호출 할 수 있습니다. 구현에서 플래그를 설정하고 반복 호출에 대한 예외를 던지는 Initialize
것은 어색한 것처럼 보입니다.
인터페이스를 해결하는 시점에서의 구현에 대해 알고 싶지 않습니다 IMyIntf
. 그러나 내가 원하는 것은이 인터페이스에 특정 시간 초기화 매개 변수가 필요하다는 것입니다. 이 정보로 인터페이스에 주석을 달고 (속성?) 객체를 만들 때 프레임 워크에 전달하는 방법이 있습니까?
편집 : 인터페이스를 조금 더 설명했습니다.
runTimeParam
사용자 입력에 따라 런타임에 결정되는 종속성입니다. 이것에 대한 대안이 그것을 두 개의 인터페이스, 즉 하나는 초기화를위한 인터페이스와 다른 하나는 값을 저장하기위한 인터페이스로 분리되어야 하는가?