인터페이스를 이용해서 무엇을 달성하고자 하나요?
가령 동일한 정보를 다양한 포멧에서 읽거나 저장하고 싶으신 건가요?
만약 그게 맞다면 예시로 보여주신 그런 형태는 아닙니다.
정보는 보통 엔터티 클래스 형태로 두고 어떤 포멧이든 동일한 값 형태로 정의해야 합니다.
그리고 인터페이스는 파일에서 읽어서 정보로 변환하는 형태면 괜찮은 인터페이스 디자인이 됩니다.
다음은 예시 입니다.
| 데이터 정의
// record를 쓴 이유는 특별한 이유는 없습니다.
record Data(string Name, List<string> Text, int Age);
| 인터페이스 정의
// 인터페이스 설계의 정답은 없습니다만 이런 느낌으로 만들 수도 있습니다.
interface IStorage<T>
{
StorageType Type { get; }
void Save(string filename, T data);
T Load(string filename);
}
enum StorageType
{
RawText,
Json,
Xml
}
그럼다음 Text, Json, Xml용 IStorage를 구현해서 인스턴스화 한 후 IStorage 형식으로 값을 가져오거나 쓸 수 있습니다.