2010-04-26 3 views
2

Я из фона Java, и я смотрю из эквивалента в C# для следующего.Тип вывода из метода generics

public interface Reader { 
    <T> T read(Class<? extends T> type); 
} 

Такое, что я могу сделать следующее, сдерживая параметр и вызывая возвращаемый тип.

Cat cat = reader.read(Cat.class); 
Dog dog = reader.read(Dog.class); 

Я надеялся, что что-то подобное будет работать в C#, но я не уверен, что это будет.

public interface Reader { 
    T Read<T>(); 
} 

И и сделайте это.

public class TypeReader : Reader { 
    public T Read<T>() { 
     Type type = T.GetType(); 
     ... 
    } 
} 

Это что-то вроде этого даже возможно в C#?

ответ

5

Да, но вы хотите typeof(T), не T.GetType(), а также:

Cat cat = reader.Read<Cat>(); 
+0

Nice, спасибо, что следует сделать трюк красиво ... –

Смежные вопросы