System.Object类可以保存datatable对象的对象吗?

时间:2011-07-20 05:44:40

标签: c# datatable

我在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方法,所以这就是它抛出错误的另一部分的原因。

通用对象可以保存数据表对象吗?

3 个答案:

答案 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上有许多类似或相关的问题。例如,这可能会对您有所帮助:

.NET - Convert Generic Collection to DataTable