public abstract class genericListClass<t>
{
protected virtual add(T value)
{
...
}
}
You can then instantiate a GenericListClass for different type as follows;
genericListClass<int> integerList = new genericListClass<int>()
genericListClass<long> LongList = new genericListClass<long>()
genericListClass<string> stringList = new genericListClass<string>()
You can also accept different generic types as parameters to methods in a generic class
public abstract class genericClass<t>
{
protected virtual CheckBoxOption[] WrapCheckBoxOptions<u>(string id, IEnumerable<checkboxoption> options)
{
...
}
}
The use of the <u> is to ensure it is taken as different from the type reperesented by <t>. <u> is a new different type.
In addition to this you can constrain the type of the class to a specific interface or behaviour;
public abstract class genericListClass<t>
{
protected virtual CheckBoxOption[] WrapCheckBoxOptions<u>(string id, IEnumerable<checkboxoption> options) where U : new()
{
}
}
This allows you to constrain the type <U> to a specific type or more usefully, Interface. You can also use it, as in this case,
where U : new()
to constrain the type to one that can be instantiated with a default constructor. In other words it does not require parameters to be passed to the constructor. So
U newInstance = new U();
will not raise an error.
No comments:
Post a Comment