【发布时间】:2019-06-12 02:08:53
【问题描述】:
我想对所有相同的代码执行两次,但只针对两个不同的对象。我从一个 SOAP API(相当过时的一个)获取这些对象。 我想避免一遍又一遍地编写重复的代码。我将使用我的原始对象并对其进行很多操作(以相同的方式)唯一的区别是对象类型是不同的,所以这就是我需要制作一个通用对象的原因。我希望它返回与作为参数相同的类型。我有一个问题,如果我做这样的代码
public static class ParamsHelper<T>
{
public static async Task<T[]> Whatever(T[] rptParams)
{
//do some stuff to rptparams
return rptParams;
}
}
// then I call it like this below:
var params = await ParamsHelper.Whatever<ItemP[]>(new ItemP[]{});
// it says can't convert type ItemP[] to type ItemP[][].
此外,我正在使用 LINQ 来完成所有操作。我想要关于如何访问对象字段的建议(也许是反射?)
【问题讨论】:
-
你的最后一句话应该是一个单独的问题。
-
在处理单个对象时,泛型通常没有帮助,因为泛型对象没有已知属性。泛型在处理列表、数组、字典等时大放异彩。处理单个对象时,您可以通过接口实现可重用性。
-
@TheodorZoulias 能否提供一个代码示例,说明我如何通过接口实现这一目标?
-
@Leah 你说你有两个不同的对象,以及这些对象的一些重复代码。它们有什么共同的属性吗?如果是,那么您应该能够使用这些公共属性定义一个
interface,然后确保两个对象都实现此接口。之后,您应该能够修改现有代码以使用此接口而不是具体类。 -
@TheodorZoulias 我无法从这些对象实现接口,因为它们不是我的对象。它们是肥皂 api 对象