La manera más fácil de explicar lo que quiero decir es con una muestra de código. Esto no compila, pero ¿hay alguna manera de conseguir este efecto:¿Se pueden usar métodos genéricos en C# si el tipo es desconocido hasta el tiempo de ejecución?
foreach(Type someType in listOfTypes)
{
SomeMethod<someType>();
}
sería muy conveniente si eso funcionaría, pero no es así. ¿Hay alguna otra forma de lograr lo mismo que arriba, y por qué C# no permite que sea una declaración legal?
Editar: Parece que la única manera de hacerlo es a través de la reflexión, que puede ser demasiado lenta para nuestras necesidades. ¿Alguna idea de por qué no hay una manera eficiente integrada y si algo así está en proceso para C# 4.0?
No estoy seguro de lo que estás tratando de lograr aquí. ¿Podría proporcionar más contexto y/o una explicación de lo que SomeMethod necesita hacer (y por qué necesita hacerlo para una lista de tipos), por favor? – Noldorin
Sí, puedes hacer eso con la reflexión como otros lo han mencionado, pero ten en cuenta que la reflexión es sangrientamente lenta. Si el rendimiento es importante en su caso, considere algún otro enfoque. –
Necesito indizar todos los tipos en nuestra base de datos de objetos sin preocuparme cuando se agregan o eliminan nuevos tipos, etc. – Davy8