Метод расширения для с примитивными параметрами - PullRequest
1 голос
/ 24 октября 2011

У меня есть метод расширения, объявленный таким образом:

public static IEnumerable<TEntity> AsEnumerable<TEntity>(this IDBQueryable<TEntity> dbQueryable) where TEntity : class
{
    return dbQueryable.Query.AsEnumerable();
}

Пример использования будет следующим:

//It works properly
IDBQueryable<Customer> customers = GetCustomerSet();
customers.AsEnumerable();

// It cannot be compiled because int type doesn't fullfill
// the constrains of the extension method
// It must be a reference type in order to be passed as a parammeter.
IDBQueryable<int> customerIDs = GetCustomerIDs();
customers.AsEnumerable();

Как я могу иметь метод расширения, который работает для двух случаев использования, которые я показал? Заранее спасибо.

1 Ответ

1 голос
/ 24 октября 2011

Просто удалите ограничение where TEntity : class. Здесь нет очевидной необходимости в ограничении, и любое использование : class или : struct предотвратит один из двух вариантов использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...