加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – WCF Json数据返回

发布时间:2020-12-15 21:20:10 所属栏目:百科 来源:网络整理
导读:这就是我的问题和要求. //下面是我的一个类函数列表,即用户,我有10-15个类函数 public IEnumerableEntity.User User() { OpenStoredPorcedure("spDB"); DataSet d = ExecuteDataSet(); DataTable myDataTable = d.Tables[0]; var stList = new ListEntity.Us
这就是我的问题和要求.

//下面是我的一个类函数列表,即用户,我有10-15个类函数

public IEnumerable<Entity.User> User()
   {
        OpenStoredPorcedure("spDB");

        DataSet d = ExecuteDataSet();

        DataTable myDataTable = d.Tables[0];

        var stList = new List<Entity.User>();

        foreach (DataRow dr in myDataTable.Rows)
        {
            Entity.User usr = new Entity.User()
            {

                FirstName = dr["first_name"].ToString() ?? null,LastName = dr["last_name"].ToString() ?? null
            };

            stList.Add(usr);
        }

        return stList.AsEnumerable();
}

现在在WCF我想要一个像下面这样的功能

public IEnumerable fetchData(int id)
{         
   IEnumerable result1 = null;

    switch (id)

    {
        case 1:
            IEnumerable<Entity.User> result = User().AsEnumerable<Entity.User>().ToArray();
            result1 = result;
            break;
        case 2:
            IEnumerable<Entity.Project> result = User().AsEnumerable<Entity.Project>().ToArray();
            result1 = result;
            break;
    }

    return result1;
}

但是我在使用上述方法时遇到此错误

请求错误
服务器遇到处理请求的错误.异常消息是’无法序列化类型的参数’System.Collections.Generic.List`1 [Entity User]'(对于操作’fetchData’,合同’ISyncService’),因为它不是确切的类型’System.Collections.IEnumerable ‘在方法签名中并且不在已知类型集合中.要序列化参数,请使用类型将类型添加到已知类型集合中

现在我希望在WCF中我们调用这个函数并传递id,它将导致该实体类的json列表.

当我使用以下功能时,我正在获取Json数据

public List<Entity.User> fetchData()
{
        return User().ToList();    
}

解决方法

如果您在返回的类型之间有基类和继承,则应在基类datacontract上添加KnownType属性,然后在属性中指定所有派生类型

像这样的东西

[KnownType(typeof(YourDerivedType))]

这是一些帮助:http://blogs.msdn.com/b/sowmy/archive/2006/06/06/all-about-knowntypes.aspx

在你返回一个彼此不相关的类型的情况下,你应该按照OsQu的建议做一些事情.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读