Как сделать универсальный метод и универсальный входной параметр для принятия списка <classname> - PullRequest
0 голосов
/ 06 февраля 2019
public interface IMerge
{
   byte[] Process(List<Image> req);
}

public class Merge : IMerge
{
  public byte[] Process ( List<Image> req)
  {
    // processing
  }
}

Теперь приведенный выше код является разновидностью библиотеки, используемой многими людьми.Итак, dll.

Я хочу сделать этот метод интерфейса универсальным входным параметром, который поддерживает List.Как это сделать?

My Caller имеет следующее:

public class Image 
{
  public string Name { get; set;}
  public byte[] ImageData { get; set ;}
} 

Ребята, я не хочу ссылаться на мой dll проекта бизнес-объектов на компонент Reusable, который является IImage.Мне интересно, есть ли способ сделать этот IMerge универсальным, так что я смогу достичь того же, что и выше

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Вы можете сделать свой интерфейс и его реализацию универсальными, чтобы принимать класс, который вы хотите отправить, как

public interface IMerge<T>
{
    byte[] Process(List<T> req);
}

public class Merge<T> : IMerge<T>
{
    public byte[] Process(List<T> req)
    {
        // processing
    }
}

И вы можете использовать его как

//Create sample List of Image class
List<Image> images = new List<Image>();

//Pass above list to generic method in Merge class
var result1 = new Merge<Image>().Process(images);
0 голосов
/ 06 февраля 2019

Я думаю, что вы этого хотите, но я не уверен, что полностью понимаю ваш вопрос

public byte[] Process<T>(List<T> req) {
...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...