Я думал о внедрении репозитория для каждого объекта (например, репозитория Person, репозитория State и т. Д.), Прежде чем принимать решение о сфере деятельности Repository вместо этого, НО у меня все еще остается вопрос относительно передачи идентификатора (идентификатора) тип с универсальным.
В двух словах, у Лица может быть идентификатор GUID, у штата / округа может быть идентификатор int и т. Д. Имея это в виду, как я могу передать тип, который указывает идентификатор, то есть тип универсального передается в?
Вот моя попытка интерфейса:
public interface IRepository<T, TID> where T : class where TID : Type
{
T Get(TID id);
IList<T> GetAll();
void Update(T entity);
void Insert(T entity);
void Delete(TID id);
}
Вы можете видеть, что T является классом (Person, State и т. Д.), И я намереваюсь, чтобы TID был типом, который используется для идентификатора, то есть посмотрите на T Get (TID id).
Это приводит к ошибке компиляции: «Тип« строка »нельзя использовать в качестве параметра типа« TID »в универсальном типе или методе« DumpWebApp.IRepository ». Неявного преобразования ссылок из« строки »в« нет » System.Type. "
Другим способом сделать это было бы передать фактический элемент в методы Get и Delete, я думаю, но это кажется немного неуклюжим.
Спасибо за любые предложения - и, кстати, приемлем ли возврат IList для GetAll ()? Почему не IQueryable или T []?
Майк К.