【问题标题】:How to make generic method and generic input parameter to accept list<classname>如何使泛型方法和泛型输入参数接受 list<classname>
【发布时间】:2019-02-06 12:19:22
【问题描述】:
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 通用,所以我仍然可以实现上述相同

【问题讨论】:

  • 我被这个问题搞糊涂了,你到底想达到什么目的?
  • 您尝试过什么,您希望如何喜欢从调用代码中使用它,您遇到了什么错误/问题?完全不清楚你想要什么
  • @DavidG:由于组件合并是可重用的,我不想将输入参数硬编码为我的业务对象名称,即“图像”类,在这种情况下,我最终会添加对整个业务对象项目到我的可重用组件中。我正在尝试使其成为可重用组件中的通用输入参数,因此我仍然可以使用我的问题中提到的上述内容从外部调用
  • 那么,如果您的库代码通过List&lt;string&gt; 传递,您希望它做什么?听起来您真的想接受List&lt;IImage&gt; 而不是通用。

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


【解决方案1】:

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

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

【讨论】:

  • 你是绝对正确的。我还有什么需要做的吗?
  • 谢谢。你和托拜厄斯回答完美。但是我先看到了你的答案,所以我会在时间允许的情况下在几分钟内投票
  • foreach(var v in List)怎么做?
  • @Learner foreach(var v in req)
  • 我想基本上循环并让 ImageBytes 读取到 byte[] ....inside foreach ...也是名称
【解决方案2】:

您可以将您的接口及其实现设为通用,以接受您想要发送给喜欢的类

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

【讨论】:

  • 谢谢;我能理解你的说法,但我不明白你的用法。我是外行哈哈借口。我为您的回答点赞,再次感谢您的帮助
  • 在您接受的上述答案中:您的界面仍然仅适用于 Image 类。那么你打算如何只使用它的实现,那就是Merge class
  • 所以我不明白你在说什么。我在使用他的代码时没有语法错误。我保留了接口和实现。 Excelt 我没有在类和接口中保留参数。为什么要保留它??
  • 它不会给您任何错误,但在这种情况下,您的界面将毫无用处,因为它仅适用于您的 Image
  • interfaceis only for my class lol ...我不想让它通用...对不起,我不明白你在说什么,因为我没有那么深入的编程...但是我不知道如何循环读取 ImageBytes 的属性到 byte[]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-16
相关资源
最近更新 更多