C# Generic Method, cannot implicit convert
c#, generics, methods
Solution
You cannot convert to `T` because of the fact that T isn't known at compile time. If you want to get your code to work you can change the return type to `ICar` and remove the generic `T` return type.
You also can cast to `T`. This would work too. If you only using the default constructor you can also constain on `new()` and use `new T()` to get your code to work.
Samples
public ICar GetCar<T>()
where T : ICar
{
ICar objCar = null;
if (typeof(T) == typeof(SmallCar)) {
objCar = new SmallCar();
} else if (typeof(T) == typeof(MediumCar)) {
objCar = new MediumCar();
} else if (typeof(T) == typeof(BigCar)) {
objCar = new BigCar();
}
return objCar;
}
Cast:
public T GetCar<T>()
where T : ICar
{
Object objCar = null;
if (typeof(T) == typeof(SmallCar)) {
objCar = new SmallCar();
} else if (typeof(T) == typeof(MediumCar)) {
objCar = new MediumCar();
} else if (typeof(T) == typeof(BigCar)) {
objCar = new BigCar();
}
return (T)objCar;
}
New-constraint:
public T GetCar<T>()
where T : ICar, new()
{
return new T();
}
Problem
I've got the following code: ``` public static T GetCar<T>() where T : ICar { T objCar = default(T); if (typeof(T) == typeof(SmallCar)) { objCar = new SmallCar(""); } else if (typeof(T) == typeof(MediumCar)) { objCar = new MediumCar(""); } else if (typeof(T) == typeof(BigCar)) { objCar = new BigCar(""); } return objCar; } ``` And this is the error I am getting: `Cannot implicitly convert type 'Test.Cars' to 'T'` What Am I missing here? All car types implement the ICar interface. Thanks