입력 오류를 변환 할 수 없습니다. 나는이 방법으로 내가 원하는 것을 분명히 생각하지만 내 실수는 무엇인지 모르겠다. ...암시 나는 내 일반적인 방법으로 문제가 일반적인 방법
도움과 새해 복 많이 받으셔서 감사합니다!
입력 오류를 변환 할 수 없습니다. 나는이 방법으로 내가 원하는 것을 분명히 생각하지만 내 실수는 무엇인지 모르겠다. ...암시 나는 내 일반적인 방법으로 문제가 일반적인 방법
도움과 새해 복 많이 받으셔서 감사합니다!
기본적으로 사용자의 메서드는 일반적이지 않으며 일반화하지 않으려 고합니다. 가능한 모든 코드를 T
에 하드 코딩하지 말고, 코드 T
이 무엇인지 신경 쓰지 마십시오. 이 경우 Entity Framework를 사용한다고 가정하면
public ReadOnlyObservableCollection<T> GetReadOnlyObjectsFromDB<T>()
where T : class
{
return new ReadOnlyObservableCollection<T>(dbContext.Set<T>().Local);
}
다른 ORM과 비슷한 기능을 수행 할 수 있습니다. dbContext
을 올바른 컬렉션에 T
매핑에 대해 걱정 시키십시오. 걱정할 필요가 없습니다.
또한 new ObservableCollection<T>(o)
은 o
의 항목을 새 목록에 복사하지만 o
의 변경 사항은 추적하지 않습니다. 다행히도 Entity Framework는 이미 사용할 수있는 엔터티에 대한 변경 내용을보고하는 ObservableCollection<T>
을 이미 제공합니다.
dbContext.Set<T>
에 T
이 참조 유형으로 필요하다는 간단한 이유 때문에 T
이 참조 유형이어야한다고 명시해야합니다.
당신이 취하는 접근법은 좋지 않습니다.하지만 컴파일러가 원하는 것을하기 위해 컴파일러는 결과 항목을 T가 아닌 다른 방법으로 캐스팅해야합니다 :
if (typeofT.GetType() == typeof(Customer))
return new ReadOnlyObservableCollection<T>
(new ObservableCollection<T>(dbContext.Customers.Cast<T>()));
고마워요. 지금 제 실수를 이해합니다. 하지만 난 hvd의 접근 방식을 사용하기로 결정했습니다. – GrayFox
'고객'과 '기사'모두 클래스입니까? –
정적 인 방법이 아니라는 것을 알 수 있습니까? – niceman
안녕하세요 맥스, 네, 그들은 수업입니다. – GrayFox