최근에 제네릭 인터페이스 문제가 발생했습니다. 인터페이스 목록을 만들고 싶었지만 일반적인 인터페이스에서는 그렇게 쉽지 않습니다. 나는 이런 식으로 목록을 만들 수 있습니다 : new List<IModelCreator<IDataCollection>>();
하지만 나는 추한 것처럼 보입니다.인터페이스 상속 인터페이스가 있지만 오버라이드 메서드가 없습니다
이제 인터페이스가 2 개 있습니다. 하나는 일반과 하나는없는 것입니다. 여기에 내가 지금 사용하는 인터페이스는 다음과 같습니다
public interface IModelCreator
{
IDataCollection GetModelFromPath(string path);
}
public interface IModelCreator<T>: IModelCreator where T : IDataCollection
{
new T GetModelFromPath(string path);
}
IModelCreator
가 모델로 파일 경로를 전환하고 T
그것이로 바뀌 얻을 것이다 모델 인 클래스입니다. 그래서 지금 수업 중에 이것을 사용하면 다음과 같이됩니다 :
public abstract T GetModelFromPath(string path);
IDataCollection IModelCreator.GetModelFromPath(string path)
{
return GetModelFromPath(path);
}
(나는 그것을 추상적으로 만들었습니다). 하지만 거기에 2 대신에 1 개의 방법을 만드는 방법은 없지만 동일한 기능을 가지고 있습니까?
나는 또한 비 제네릭 인터페이스로 시도했다. 나는 다음과 같은 추상 클래스가 있습니다
public abstract class DocumentConverterCreatorBase<T>: IModelCreator where T: IDataCollection
을하지만 내 일반 T
등의 반환 형식을 사용할 수 없습니다. 그리고 나는 이유를 모른다.
힌트 : 당신은 좋은 디자인 회원 전에'new'을 넣어하지 않아도됩니다. 그것은 반창고입니다. –
@HenkHolterman 그것은 내가 행복해했던 유일한 것입니다. 내 게시물에서 언급 한 List 변형을 생각해 낼 수 있습니다. 나는 그저 올바른 방향으로 나를 도울 수있는 몇 가지 해답을 얻을 수 있기를 바랍니다. – patrick