class Result
{
public string Data { get; set; }
}
interface IRepository
{
Result[] Search(string data);
}
"뭔가"를 검색하고 Result
을 반환하는 상당히 일반적인 인터페이스가 있습니다. IRepository
인터페이스는 여러 클래스로 구현할 수 있으며 각 클래스는 고유 한 메타 데이터로 자체 Result를 반환합니다. 예를 들어, 나는 디스크에 데이터를 검색하는 DiskRepository
을 가질 수파생 된 형식을 반환하는 인터페이스
class DiskResult : Result
{
public int FileSize { get; set; }
public DateTime LastModifiedDate { get; set; }
}
class DiskRepository : IRepository
{
public Result[] Search(string data)
{
// ...
DiskResult[] results = GetDataFromSomewhere();
return results;
}
}
DiskResult
는 DiskRespository
에 특정 결과에 대한 추가 정보가 포함되어 있습니다. IRepository
을 구현하는 다른 클래스를 만든 경우 해당 특정 구현에는 해당 클래스에 고유 한 고유 한 메타 데이터 집합이있을 수 있습니다.
내가 쉽게 내 Result
클래스에 Data
속성을 표시 할 수 있지만,에 대한 메타 데이터를 표시 할 수있는 좋은 패턴이있다 :
, I는 다음과 같이 내 검색 컨트롤러를하고 싶습니다 각 클래스는 Result
에서 파생됩니까? if
문장을 사용하여 클래스가 유형인지 확인해 볼 수는 있지만 다소 어색해 보입니다. 달성하려는 일을하는 더 좋은 방법이 있습니까? 당신은 결과가 표시됩니다 결과 클래스의 virtual
방법을 가질 수
interface IRepository<T>
{
T[] Search(string data);
}
이것은 SRP를 위반합니다. 프레젠테이션은 도메인과 분리되어야합니다. – Eranga