我有一个web方法,它调用DAL中的方法来通过id执行过程并返回MyData类型的对象。.NET的动态返回类型方法
[WebMethod]
public MyData GetDataById(int id)
{
DAL myDAL = new DAL();
return myDAL.GetDataById(id);
}
类迈德特如下所示
public class MyData
{
public string Name;
public Data[] DataItems;
}
和类Data
,
public class Data
{
public string key;
public string value;
}
现在,这工作得很好,直到我们想回到一个有点复杂类型。
举一个例子,一个DataTable
,或者类似的含纬度,经度和值的结构(或类)。显然,类Data
不能容纳多个值或一个DataTable。 (它包含两个字符串,键和值)。
所以我真正想要的是类型是通用的。所以,我把它改成...
public class MyData<T>
{
public string Name;
public T[] DataItems;
}
所以我会做这样的事情myDAL.GetDataById
里面的原因是什么类型的数据是根据类型不同返回。
if (GetTypeOfId(id) == "NormalData")
{
MyData<Data> result = new MyData<Data>();
}
else if (GetTypeOfId(id) == "Map")
{
MyData<MapData> result = new MyData<MapData>();
}
但我需要指定一个类型的方法签名,以及不幸的是只在运行时发现。
我该如何处理这种情况?
我觉得我使用泛型的东西,我不应该使用它。
或者通常情况下只在运行时发现类型的情况已解决?
更新:最糟糕的情况是有不同的Web服务调用来获取我想要避免的正常数据和地图数据。
你需要指定哪种类型?你不能公开MyData GetDataById(int id)吗? –
Cilvic
2011-06-06 12:24:25
是的。对于Web服务调用以及DAL中的方法。 – 2011-06-06 12:25:37
@Cilvic:你真的可以拥有一个通用的'WebMethod'吗? – Gabe 2011-06-06 12:33:14