Они также должны быть сделаны IResponse
универсальными:
public interface IResponse<T>
where T : IResult
{
T Result { get; set; }
}
public class Response<T> : IResponse<T>
where T : IResult
{
public T Result { get; set; }
}
Если вы хотите сохранить интерфейс IResponse
без общего параметра в такте, вы можете пойти еще дальше.Ниже приведены два интерфейса, где класс также прозрачно реализует интерфейс без универсального параметра:
public interface IResponse
{
IResult Result { get; set; }
}
public interface IResponse<T> : IResponse
where T : IResult
{
T Result { get; set; }
}
public class Response<T> : IResponse<T>
where T : IResult
{
public T Result { get; set; }
IResult IResponse.Result
{
get { return Result; }
set { Result = (T)value; }
}
}
И, если вы хотите остаться ближе к своей первоначальной реализации, вы можете удалить IResponse<T>
и получите следующее:
public interface IResponse
{
IResult Result { get; set; }
}
public class Response<T> : IResponse
where T : IResult
{
public T Result { get; set; }
IResult IResponse.Result
{
get { return Result; }
set { Result = (T)value; }
}
}