我在vs2010中的C#中有一个方法应该返回系统的通用对象。因为这些方法返回不同类型的结果,如int,datatable,string。该对象可以保存int以及字符串,但是当我持有或将数据表分配给通用对象时,它会抛出错误 -
Server was unable to process request. ---> There was an error generating the XML document. ---> The type System.Data.DataTable may not be used in this context. To use System.Data.DataTable as a parameter, return type, or member of a class or struct, the parameter, return type, or member must be declared as type System.Data.DataTable (it cannot be object). Objects of type System.Data.DataTable may not be used in un-typed collections, such as ArrayLists.
因为我正在开发Web方法,所以这就是它抛出错误的另一部分的原因。
通用对象可以保存数据表对象吗?
答案 0 :(得分:0)
是通用对象可以容纳DataTable(可以轻松检查 - 请参阅下面的代码)。我想你的问题不在于自己持有通用对象,而是使用WebService和序列化集合的可能性(本地方法可以)。
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
List<DataTable> t = new List<DataTable>();
t.Add(new DataTable());
ArrayList x = new ArrayList();
x.Add(new DataTable());
}
}
}
答案 1 :(得分:0)
所有.Net类型都继承自System.Object
,因此System.Object
可以保留DataTable
。
您的问题似乎与您的设计更相关。如果它与Web服务相关,请考虑不返回类似DataTable或DataSet的类型,因为这些类型可能不容易在非.Net平台上使用。而是表示类/结构中的数据。
答案 2 :(得分:-1)
是的,它可以。 Stackoverflow上有许多类似或相关的问题。例如,这可能会对您有所帮助: