如何使通用方法和通用输入参数接受list <classname>

时间:2019-02-06 12:19:22

标签: c# .net image generics c#-4.0

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

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

现在,以上代码是许多人使用的一种库。 dll。

我想将此接口方法作为支持List的通用输入参数。怎么做?

我的呼叫者具有以下内容:

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

伙计,我不想将我的业务对象项目dll引用到我的可重用组件(即IImage)上。我想知道是否有一种使IMerge通用的方法,所以我仍然能够实现与上面相同的效果

2 个答案:

答案 0 :(得分:1)

我认为您想要这个,但是我不确定我是否完全理解您的问题

public byte[] Process<T>(List<T> req) {
...
}

答案 1 :(得分:1)

您可以使您的接口及其实现通用,以接受您想要发送给的类

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);