Общие функции и параметр ref. - PullRequest
0 голосов
/ 29 ноября 2018
public void ResponseHandler<T>( string responseContent, ref Result<T> result)
    where T : IServiceModel
{
    var respModel = responseContent.FromJson<OrderResponse>();
    if (respModel.Status.Equals(_innerConfig.SuccessTradeStatus, StringComparison.OrdinalIgnoreCase))
    {
        result.IsSuccess = true;
        result.Data.TradeNo = respModel.Transaction_id;// CAN NOT resolve symbol TradeNo   
    }
   ...
}

public class Result<T> : Result
{
    public T Data { get; set; }
}

public class MyModel:IServiceModel
{
    public string TradeNo  { get; set; }
}
public interface IServiceModel
  {
  }

использование: ServiceProvider.ResponseHandler<MyModel>(responseContent, ref result);

Проблема в том, что я не могу получить свойство TradeNo, я нашел другой поток: Универсальные функции и ref возвращаются в C # 7.0 Ноне уверен, что это та же проблема с моим кодом.Любые предложения? Спасибо.:)

1 Ответ

0 голосов
/ 29 ноября 2018

Это потому, что Data имеет тип T

public class Result<T> : Result
{
    public T Data { get; set; }
}

и единственное ограничение для T равно where T : IServiceModel

Если вам нужен доступ к TradeNo, вынеобходимо ограничить T до MyModel или добавить это свойство к IServiceModel

public interface IServiceModel
{
    string TradeNo  { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...