Usted podría utilizar una interfaz covariante para ShaderParam<T>
:
interface IShaderParam<out T> { ... }
class ShaderParam<T> : IShaderParam<T> { ... }
Uso:
IShaderParam<object>[] parameters = new IShaderParam<object>[5];
parameters[0] = new ShaderParam<string>(); // <- note the string!
Pero no se puede utilizar con los tipos de valor como float
en tu ejemplo . La covarianza solo es válida con tipos de referencia (como string
en my ejemplo). Usted también no puede usar si el parámetro de tipo aparece en posiciones contravariantes, p.como parámetros del método. Aún así, podría ser bueno saber sobre esta técnica.
No es, es mi propia clase;). Probándolo ahora. – Hannesh