C# 如何使泛型方法和泛型输入参数接受列表<;类名>;

C# 如何使泛型方法和泛型输入参数接受列表<;类名>;,c#,.net,image,generics,c#-4.0,C#,.net,Image,Generics,C# 4.0,伙计们,我不想把我的业务对象项目dll引用到我的可重用组件IImage上。我想知道是否有一种方法可以使IMerge通用化,这样我仍然能够实现上述相同的目标我想你想要这个,但我不确定我是否完全理解你的问题 public class Image { public string Name { get; set;} public byte[] ImageData { get; set ;} } public byte[]进程(列表请求){ ... } 我想你想要这个,但我不确定我是否完全理

伙计们,我不想把我的业务对象项目dll引用到我的可重用组件IImage上。我想知道是否有一种方法可以使IMerge通用化,这样我仍然能够实现上述相同的目标

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

public class Image 
{
  public string Name { get; set;}
  public byte[] ImageData { get; set ;}
} 
public byte[]进程(列表请求){
...
}

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

public class Image 
{
  public string Name { get; set;}
  public byte[] ImageData { get; set ;}
} 
public byte[]进程(列表请求){
...
}

您可以将接口及其实现设置为泛型,以接受要发送到的类

public byte[] Process<T>(List<T> req) {
...
}
公共接口IMerge
{
字节[]进程(列表请求);
}
公共类合并:IMerge
{
公共字节[]进程(列表请求)
{
//加工
}
}
你可以像这样使用它

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

public class Merge<T> : IMerge<T>
{
    public byte[] Process(List<T> req)
    {
        // processing
    }
}
//创建图像类的示例列表
列表图像=新列表();
//将上述列表传递给合并类中的泛型方法
var result1=new Merge().进程(图像);

您可以将接口及其实现设置为泛型,以接受要发送到的类

public byte[] Process<T>(List<T> req) {
...
}
公共接口IMerge
{
字节[]进程(列表请求);
}
公共类合并:IMerge
{
公共字节[]进程(列表请求)
{
//加工
}
}
你可以像这样使用它

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

public class Merge<T> : IMerge<T>
{
    public byte[] Process(List<T> req)
    {
        // processing
    }
}
//创建图像类的示例列表
列表图像=新列表();
//将上述列表传递给合并类中的泛型方法
var result1=new Merge().进程(图像);


我被这个问题弄糊涂了,你到底想实现什么?你尝试了什么,你想如何通过调用代码来使用它,以及你会遇到什么错误/问题?根本不清楚你在说什么want@DavidG:由于组件合并是可重用的,我不想将输入参数硬编码到我的业务对象名称(即类“Image”)中,在这种情况下,我将最终将整个业务对象项目的引用添加到我的可重用组件中。我正试图在可重用组件中使其成为通用输入参数,因此我仍然能够使用我的问题中提到的上述内容从外部调用。例如,如果向库代码传递了
列表
,您希望库代码做什么?听起来你真的想加入一个
列表而不是泛型。我被这个问题弄糊涂了,你到底想实现什么?你尝试了什么,你想如何使用它来调用代码,你会遇到什么错误/问题?根本不清楚你在说什么want@DavidG:由于组件合并是可重用的,我不想将输入参数硬编码到我的业务对象名称(即类“Image”)中,在这种情况下,我将最终将整个业务对象项目的引用添加到我的可重用组件中。我正试图在可重用组件中使其成为通用输入参数,因此我仍然能够使用我的问题中提到的上述内容从外部调用。例如,如果向库代码传递了
列表
,您希望库代码做什么?听起来你真的想加入一个
列表而不是泛型。你完全正确。我还需要做什么吗?谢谢。你和托拜厄斯回答得很好。但我首先看到了你的答案,所以我在几分钟内投票决定如何进行foreach(列表中的var v)?@Learner
foreach(req中的var v)
我想基本上循环一遍,并让ImageBytes读取到foreach中的byte[]……还有你绝对正确的名字。我还需要做什么吗?谢谢。你和托拜厄斯回答得很好。但是我首先看到了你的答案,所以我在几分钟内投票决定如何做foreach(列表中的var v)?@Learner
foreach(请求中的var v)
我想基本上循环一下,让ImageBytes读取到字节[]……在foreach内……还有名字谢谢;我能理解你的陈述,但我不理解你的用法。我是外行lol的借口。我向你们竖起大拇指投票赞成你们的答案,再次感谢你们在上面的答案中的帮助,你们接受了:你们的界面仍然只适用于class
Image
。那么你打算如何只使用它的实现,那就是
Merge
classs,所以我不明白你说什么。我在使用他的代码时没有语法错误。我在接口和实现两个方面都做了改进。很好,我没有在类和接口中保留参数。为什么你要保留它?它不会给你任何错误,但在这种情况下,你的界面是无用的,因为它只用于你的
图像
ClassInterface只用于我的类lol…我不想让它通用…对不起,我不明白你说什么,因为我对编程没有那么深入…但是我不知道如何循环和读取属性从ImageBytes到byte[]谢谢;我能理解你的陈述,但我不理解你的用法。我是外行lol的借口。我向你们竖起大拇指投票赞成你们的答案,再次感谢你们在上面的答案中的帮助,你们接受了:你们的界面仍然只适用于class
Image
。那么你打算如何只使用它的实现,那就是
Merge
classs,所以我不明白你说什么。我在使用他的代码时没有语法错误。我在接口和实现两个方面都做了改进。很好,我没有在类和接口中保留参数。为什么你要保留它?它不会给你任何错误,但在这种情况下,你的界面是无用的,因为它只用于你的
图像
ClassInterface只用于我的类lol…我不想让它通用…对不起,我不明白你说什么,因为我对编程没有那么深入…但是我不知道如何循环和读取属性从ImageBytes到byte[]