tengo la siguiente clase en C++/CLI y una instanciación de plantilla explícita para la int primitivo ..Utilice C++ CLI clase de plantilla en C#
template<typename T>
public ref class Number
{
T _value;
public:
static property T MinValue
{
T get()
{
return T::MinValue;
}
}
static property T MaxValue
{
T get()
{
return T::MaxValue;
}
}
property T Value
{
T get()
{
return _value;
}
void set(T value)
{
if(value<MinValue || value > MaxValue)
throw gcnew System::ArgumentException("Value out of range");
_value = value;
}
}
};
template ref class Number<int>;
En la elaboración de este y la inspección de la generada a partir de conjunto reflector soy capaz para ver una clase llamada Number<int>
pero al intentar crear una instancia de esta misma clase en C#, el compilador se queja de que alguna clase System::Number
no toma un argumento de plantilla. ¿Qué estoy haciendo mal? ¿Se puede hacer esto?
Lamentablemente, la creación de tipos genéricos derrota el propósito de utilizar C++/CLI ya que C# puede hacer lo mismo y es igualmente ineficaz. –
Entonces parece que la respuesta que publicaste es el único camino a seguir (aunque eso en cierto modo frustra el propósito de usar plantillas). Como dijo @JaredPar, las plantillas no son lo mismo que los genéricos, y solo C++ puede usar plantillas. – Andy