C# equivalent syntax for Java generic class type

I am looking for a equivalent syntax for java code below in C#.

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

The list above basically only accept Sub Class of A (or A) as input.

Thank in advance.

Jon Skeet
people
quotationmark

There's no equivalent for that in C#. The generics in C# are quite different to those in Java in various ways, including the way covariance and contravariance work.

You could have a generic method (or generic type) with a constraint on the type parameter like this:

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

or

public class Foo<T> where T : SomeClass

... but Type itself (the .NET equivalent of Class<T>) is non-generic, so there's no way of saying "This is a list of types which extend A".

If you give us more information about what you're trying to achieve, we may be able to help you more.

people

See more on this question at Stackoverflow