假设有不同的合约C1,C2,C3,...... Cn。
现在我的方法如下所示:
public List<Cn> M(string param1, string param2)
{
switch(param2)
case value1:
var list1 = new List<C1>();
list.Add(new C1());
return list;
break;
case value2:
var list2 = new List<C2>();
list.Add(new C2());
return list2;
break;
default:
return null;
break;
}
此方法调用DB方法,该方法基于param2获取数据并创建特定对象的列表并返回相同的对象。现在对于param2的不同值,它将发送不同类型对象的列表。怎么做到这一点?在通用或其他方法中,任何帮助都将受到赞赏。
更新
C1和C2的结构可能不同。
Class C1
{
int i;
string j;
}
Class C2
{
string i;
string j;
}
答案 0 :(得分:0)
您可以尝试将返回的列表更改为对象列表
public List<object> M(string param1, string param2){
//code here
}
答案 1 :(得分:0)
您的合约之间有什么共同之处?使它成为一个接口,让所有合同类实现该接口。
您的方法签名看起来像
public IEnuemerable<ICommonInterface> M(string param1 ,string param2)
{
}
答案 2 :(得分:0)
我建议你可以使用marker interface。
public interface IContract{}
public class C1: IContract{
...
}
public class C2: IContract{
...
}
public List<IContract> M(string param1, string param2){
...
}
答案 3 :(得分:0)
创建所需类型的实例,需要使用system.activator。
这是指向您问题答案的链接。 Get a new object instance from a Type
答案 4 :(得分:0)
我认为这有助于你。
public List<T> M<T>(string param1, string param2)
{
switch(param2)
case value1:
var list1 = new List<C1>();
list.Add(new C1());
return list;
break;
case value2:
var list2 = new List<C2>();
list.Add(new C2());
return list2;
break;
default:
return null; // Here you can not return null try to return something apart form null.
break;
}