2016-11-28 21 views
1

Я интерфейс, который я использую для отображения сущностей объектов в домене объектовAssistant Использование C# Generics

public interface IDataEntity<in T1, out T2> where T1 : new() where T2 : new() 
{ 
    T2 Map(T1 obj); 
} 

Для реализации

public class MyEntityObj : IDataEntity<MyEntityObj, MyDomainObj> 
{ 
    //props 
    public MyDomainObj Map(MyEntityObj obj){ 
     // mapping here 
     return new MyDomainObj(); 
    } 
} 

Как я мог написать интерфейс, чтобы позволить мне написать реализацию например

public class MyEntity : IDataEntity<MyDomainObj>{ 
} 

Спасибо!

+0

Единственный способ - вернуть 'IDataEntity' вместо' T2', но тогда вы в основном теряете сильную типизацию, которую хотите получить от того, чтобы этот второй тип был общим. – juharr

ответ

3

Вы не можете. Вам нужно будет выписать полный список общих аргументов.

+0

Я пробую разные вещи, но мне не повезло. Спасибо за помощь. –