У меня есть API, используя общий метод, как следоватьPass конкретный тип объекта в качестве параметра для универсального метода
public static class DataProvider
{
public static Boolean DeleteDataObject<T>(Guid uid, IDbConnection dbConnection)
{
// Do something here
}
public static IDbConnection GetConnection()
{
// Get connection
}
}
Моя программа содержит классы, генерируемые с помощью CodeDOM во время выполнения, а также для того, чтобы отслеживать Я создал интерфейс, который называется IDataObject
. Я пытаюсь передать конкретный тип каждого объекта общего метода выше следующим образом:
public static Boolean PurgeDataObject(this IDataObject dataObject, Guid uid)
{
return DataProvider.DeleteDataObject<T>(uid, DataProvider.GetConnection());
}
dataObject
содержит экземпляр класса, который наследует от IDataObject
. Я заинтересован в получении этого типа и передал его как T
. Я пытаюсь выяснить, можно ли как-то использовать dynamic
здесь. typeof()
и GetType()
не работают, как указано в Here
Есть несколько трюков, которые используют динамику как мост между отражением и дженериками, но для этого требуется экземпляр. Если у вас нет экземпляра, MakeGenericMethod является вашим основным инструментом. Или не общий API ... –
@MarcGravell: 'dataObject' - это экземпляр, который содержит информацию о типе, которую я пытаюсь извлечь и передать. Посмотрите на ответ Джона –