tengo algo de código heredado con un método foo que tiene más de 700 sobrecargas:C# No se puede llamar sobrecargado método no genérico del método genérico
[DllImport("3rdparty.dll")]
protected static extern void foo(int len, ref structA obj);
[DllImport("3rdparty.dll")]
protected static extern void foo(int len, ref structB obj);
[DllImport("3rdparty.dll")]
protected static extern void foo(int len, ref structC obj);
//and 700 similar overloads for foo...
me gustaría exponer estos métodos sobrecargados través de un único método que utiliza los genéricos:
public void callFoo<T>(int len)
where T : new() //ensure an empty constructor so it can be activated
{
T obj = Activator.CreateInstance<T>(); //foo expects obj to be empty, and fills it with data
foo(len, ref obj);
//...do stuff with obj...
}
Desafortunadamente, este devuelve los errores: "El partido mejor método sobrecargado para 'foo (int, ref Structa)' tiene algunos argumentos no válidos" y "no se puede convertir de 'ref T' a 'ref StructA' ".
¿Hay una manera elegante de lograr esto?
¿Los tipos 'classA',' classB' forman parte de una jerarquía de clases? Si es así, ¿puedes explicar la estructura? – Oded
700 sobrecargas? Bastante grande para una clase – TalentTuner
Uhu, ¿700 sobrecargas? ¿Seguro que quieres agregar otra capa de complejidad en eso? – Makach