I have a generic business object collection class which contains some business objects:
public abstract class BusinessObjectCollection<T> : ICollection<T>
where T : BusinessObject
I want to write a method on my Collection class that returns the type T and a method that returns a newly-instantiated object of type T.
In C++, this would be where you simply declare a typedef value_type T; and use BusinessObjectCollection::value_type but I can’t find an equivalent in C#.
Any suggestions?
EDIT: One close parallel to the typedef I was thinking of is the method:
Type GetGenericParameter() {
return typeof(T);
}
Try something like this:
In C# you can use the type parameter (i.e.
T) as you would any other type in your code – there is nothing extra you need to do.In order to be able to create instances of
T(without using reflection) you must constrain the type parameter withnew()which will guarantee that any type arguments contain a parameterless constructor.