У меня есть интерфейс, определенный следующим образом:
public interface ISomeOrderService
{
T GetUserNameandPass<T>();
Task<IEnumerable<T>> FetchOrdersAsync<T>(bool useProxy, bool impersonateProxyUser);
}
Для GetUserNameandPass
я хочу, чтобы он возвращал следующий объект в реализующем классе:
public class NameandPass
{
public string UserName { get; set; }
public string Password { get; set; }
}
На с другой стороны, для FetchOrdersAsync
я хочу, чтобы он возвращал следующий объект в реализующем классе:
public class SomeOrder
{
public string prop1 { get; set; }
public DateTime prop2 { get; set; }
internal static async Task<IEnumerable<SomeOrder>> ConvertServiceResponseToSomeOrderListAsync(SomeResponse someResponse)
{
//someResult
return someResult.ToList();
}
}
У меня есть реализующий класс, который выглядит следующим образом:
public class SomeOrderService : ISomeOrderService
{
private IAMSService _aMSService;
public SomeOrderService()
{
_aMSService = new AMSService();
}
public NameandPass GetUserNameandPass()
{
return _aMSService.GetProxyUser<NameandPass>("SomeTypeOfUser");
}
public async Task<IEnumerable<SomeOrder>> FetchOrdersAsync<SomeOrder>(bool useProxy, bool impersonateProxyUser)
{
//someResponse;
return await SomeOrder.ConvertServiceResponseToSomeOrderListAsync(someResponse);
}
}
Здесь у меня есть эта первая ошибка в строке:
return await SomeOrder.ConvertServiceResponseToSomeOrderListAsync(someResponse);
SomeOrder is a type parameter, which is not valid in the given context.
А другая ошибка появляется в AMSService
:
public class AMSService : IAMSService
{
public NameandPass GetProxyUser<NameandPass>(string proxyUser)
{
//someProxyUserResultObject
return new NameandPass { UserName = someProxyUserResultObject.Username, Password = someProxyUserResultObject.Password };
}
}
Здесь я получаю эта вторая ошибка:
AMSService doesn't implement member 'IAMSService.GetProxyUser<T>(string)'. 'AMSService.GetProxyUser<NameandPass>(string)' cannot implement 'IAMSService.GetProxyUser<T>(string)' because it does not have matching return type of 'T'.'
IAMSService.cs
выглядит так:
public interface IAMSService
{
T GetProxyUser<T>(string proxyUser);
}
Что я могу здесь делать не так? Не подходит ли определение моего интерфейса с самого начала?
Спасибо за помощь!