2013-12-15 3 views
1

Я ищу эквивалентный синтаксис для java-кода ниже на C#.Синтаксис эквивалента C# для класса generic класса Java

ArrayList<Class <? extends A>> list = new ArrayList<Class<? extends A>>(); 
// Sample usage 
list.add(A.class); 
list.add(B.class); // B extends A 

В приведенном выше списке в основном принимаются только подкласс A (или A).

Благодарим заранее.

ответ

2

В C# нет эквивалента для этого. Дженерики в C# совершенно разные, чем в Java, различными способами, включая работу ковариации и контравариантности.

Вы могли бы иметь общий метод (или универсального типа) с ограничением по параметру типа, как это:

public void Foo<T>(IList<T> list) where T : SomeClass 

или

public class Foo<T> where T : SomeClass 

... но Type себя (в .NET эквивалент Class<T>) является неэквивалентным, поэтому нет способа сказать «Это список типов, которые расширяют A».

Если вы дадите нам больше информации о том, чего вы пытаетесь достичь, мы сможем вам помочь.

+0

У меня есть словарь Словарь <строка, тип>, он работает, я просто хотел добавить больше ограничений и меньше кастинга. спасибо за Ваш ответ. –

+1

@ PeirHwa.Soo: К сожалению, нет способа сделать это :(Я бы проверял тип до того, как вы поместили его в словарь, а затем просто поверьте, что бросок будет работать позже. –

0

# Язык C имеет дженерики от версии 2.0 года:

http://msdn.microsoft.com/en-us/library/512aeb7t.aspx

типа ограничений можно найти здесь:

http://msdn.microsoft.com/en-us/library/d5x73970.aspx

Я основном Java программист не C# один поэтому я не уверен в точном синтаксисе того, что вам нужно, но вы должны быть в состоянии найти его оттуда.

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