Создание интерфейса для создания универсального объекта List - PullRequest
5 голосов
/ 24 января 2011

У меня есть структура данных примерно такая:

public class HighLevelConversionData
{
    public int customerID {get;set;}
    public string customerName {get;set;}
    public decimal amountSpent {get;set;}
}

Эти данные будут доступны третьей стороне и интерфейсу GWT, то есть я буду использовать веб-сервисы для перемещения данных.Клиент также имеет другую локализацию, нежели команда разработчиков, поэтому я хочу отправить сообщения о состоянии в качестве оболочки для возвращаемых элементов данных, например:

public class HighLevelConversionDataWrapper
{
    public int StatusCode {get;set;}
    public string StatusMessage {get;set;}
    public List<HighLevelConversionData> {get;set;}
}

Однако я бы предпочел иметьинтерфейс для наследования этих методов, чтобы мы всегда отправляли код состояния и сообщение одним и тем же способом.Но мое понимание того, как работают дженерики в интерфейсе, похоже, подводит меня.Я считаю, что это должно быть что-то вроде:

public Interface IServiceWrapper
{
    public int StatusCode {get;set}
    public string StatusMessage {get;set;}
    public List<T> ReturnedData {get;set;}
}

Но я оторвался здесь.

Ответы [ 2 ]

8 голосов
/ 24 января 2011

Как то так?

public class ConcreteWrapper : IServiceWrapper<HighLevelConversionData>
{
    public int StatusCode {get;set;}
    public string StatusMessage { get; set; }
    public List<HighLevelConversionData> ReturnedData { get; set;}
}

public class HighLevelConversionData
{
    public int customerID {get;set;}
    public string customerName {get;set;}
    public decimal amountSpent {get;set;}
}

public interface IServiceWrapper<T>
{
    int StatusCode { get; set; }
    string StatusMessage { get; set; }
    List<T> ReturnedData { get; set;}
}
2 голосов
/ 24 января 2011

Если интерфейс имеет параметры универсального типа, сам интерфейс должен быть универсальным, поэтому вам нужно будет сделать:

public interface IServiceWrapper<T> 
{     
  public int StatusCode {get;set}     
  public string StatusMessage {get;set;}     
  public List<T> ReturnedData {get;set;} 
} 

и затем указать параметры типа в коде следующим образом:

public class HighLevelConversionDataServiceWrapper 
          : IServiceWrapper<HighLevelConversionData>
{
   public List<HighLevelConversionData> ReturnedData {get;set;} 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...