2010-01-20 3 views
0

다양한 Mock 객체의 사전을 고유 한 식별자로 키 입력 한 다양한 인스턴스가있는 방법을 찾고 싶습니다. 나는 Moq을 사용하고 있는데, 그 문법은 타이핑이가는 한 Mock<IFoo>이다. 하지만 기본적으로이 내가 동적으로 해결하고 런타임에 인스턴스를 덮어 쓸 수 있습니다 포함 된 사전을 가지고 싶다 :C# Dynamic Dictionary

Key = IFoo (basically a type) 

Value = new SomeCustomType<T> 
{ 
    T ConcreteObject 
    Mock<T> MockObject 
} 

내가 적절를 통해 내 질문을 받고되지 않을 수 있습니다하지만 난 약간의 도움을 사용할 수 있습니다!

+0

키와 값은 무엇이고, 정확히 사용되며, 무엇을 위해 사용될 것입니까? "Key = IFoo"가 무슨 뜻인지 이해하는 데 어려움이 있습니다. 인터페이스는 객체가 아니며 어디에서나 사용할 수있는 유일한 키가 될 수 없습니다. –

+1

Key가 Type의 인스턴스라고 생각합니다. 아마 typeof (IFoo)가 될 수 있습니다. 이 값은 해당 유형의 구체적인 객체 및 해당 유형의 모의 객체의 인스턴스입니다. –

+1

automocking 컨테이너와 비슷한 것을 재발견하려는 것 같지만 구체적인 대상은 무엇입니까? –

답변

1

: 당신의 라인을 따라 뭔가를 할 수있는, 그런

public static class MockDict<T> { 
    public static Mock<T> Instance { get; set; } 
} 

:

대신하는 경우, 당신은 당신이 매우 비슷한 일을 할 수있는, 유형에 의해 키가 Mock 인스턴스를 얻으려면 구체적인 객체가 필요하지 않은 경우 automocking container을 사용할 수 있습니다.

Here's an Autofac automocking container for Moq.

1

저는 100 % 확신 할 수는 없지만 질문은 여기에 있습니다. 당신이 할 것 IFoo 유형과 연관된 인스턴스를 설정하려면 다음

public static class Dict<T> { 
    public static T Instance { get; set; } 
} 

: 당신은 종류에 따라 키가 인스턴스의 사전을 원한다면, 그렇게 할 수있는 가장 쉬운 방법은 실제 사전보다는 정적 제네릭 클래스를 사용하는 것입니다 Dict<IFoo>.Instance = myIFooInstance;을 입력하고 다시 얻으려면 Dict<IFoo>.Instance의 결과 만 저장하면됩니다.

Mock<IFoo> myMock = ... 
MockDict<IFoo>.Instance = myMock; 
... 
Mock<IFoo> myMock2 = MockDict<IFoo>.Instance;