내 인터페이스 (의 일부) :인터페이스 매개 변수 제약
public interface IRepository
{
Task<T> Insert<T>(T item) where T : class, ISyncable;
}
내 구현 : TableOperation.Insert
필요가 ITableEntity
을 할 수 있기 때문에
public class TableStorageRepository: IRepository
{
public async Task<T> Insert<T>(T item) where T: class, ISyncable
{
TableOperation.Insert(item);
}
}
이
내 구현은 ISyncable
Task<T> Insert<T>(T item) where T : class, ISyncable, ITableEntity;
내 인터페이스를 업데이트 할 수 없습니다. 다른 IRepository 구현이 작동하지 않기 때문입니다. 이자형.
내 구현 매개 변수 제약 ITableEntity
을 추가 할 수 있습니다 다음 제약 조건은 다음과 같은 오류가 발생 더 이상 인터페이스 제약 조건과 일치하지 않기 때문에 : 매개 변수 유형에 대한
"제약 'T '방법 중 ... "
이 문제를 해결할 우아한 방법이 있습니까?
별도의 인터페이스/메소드를 만들 수 없으면 가능한 런타임 오류가 발생하여 캐스팅합니다. –
런타임시'itemStatusReposity'에서'item' 유형을 확인한 다음 전달 된 객체가 'ITableEntity'를 구현하지 않으면'ArgumentException' ... – Michael
간격을 메우는 것이 가능할까요? 구현 세부 정보 숨기기? 당신은'ISyncable'을 구현 한 클래스를 받아들이고 내부적으로 차이를 처리한다는 것을 의미합니까? –