Я пишу несколько тестов, и часто мне приходится искать общие c параметры для явной передачи.
public class MyService : SecureService<RootEntity>
{
//Intentionally omitted does not provide information related to question
}
public DepedencyReplaceScope<IContextProvider> CreateMockScope<TRootEntity>
{
var mockCtx = Mock.Of<IContextProvider>(x => x.WriteContext<TRootEntity> == new FakeContext<TRootEntity>())
return new DependencyReplaceScope(mockCtx);
}
В настоящее время, когда я создаю макеты для своего теста, Я тоже go в службу и выяснил, что это root, чтобы передать. Тем не менее, было бы намного приятнее, если бы я мог создать область действия на основе службы.
например (псевдокод)
public DepedencyReplaceScope<IContextProvider> CreateMockScopeFromService<TService>
where TService : SecureService<>
define TRootEntity : TService<()>
{
return CreateMockScope<TRootEntity>();
}
Это не сработает, так как я не думаю, есть способ определить прокси для Generi c. Есть ли способ создать эту область исключительно из TService (я не хочу использовать отражение непосредственно для ее построения, но я не против использования хака с moq, поскольку он абстрагирует отражение)