У меня есть базовый интерфейс, IResponse ...
public interface IResponse
{
int CurrentPage { get; set; }
int PageCount { get; set; }
}
... универсальный интерфейс, ICollectionResponse, который наследуется от базового интерфейса ...
public interface ICollectionResponse<T> : IResponse
{
List<T> Collection { get; set; }
}
.... и класс EmployeesResponse, который наследуется от универсального интерфейса и, следовательно, от базового интерфейса ...
public class EmployeesResponse : ICollectionResponse<Employee>
{
public int CurrentPage { get; set; }
public int PageCount { get; set; }
public List<Employee> Collection { get; set; }
}
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Моя проблема здесь.У меня есть общий метод задачи, который возвращает экземпляр базового интерфейса, IResponse.Внутри этого метода мне нужно определить, реализует ли T из ICollectionResponse.
public class Api
{
public async Task<IResponse> GetAsync<T>(string param)
{
// **If T implements ICollectionResponse<>, do something**
return default(IResponse);
}
}
Я безуспешно пробовал все версии метода IsAssignableFrom (), в том числе:
typeof(ICollectionResponse<>).IsAssignableFrom(typeof(T))
IЦеню любые отзывы.