日期:2014-05-17  浏览次数:21059 次

C# WebServices返回自定义泛型--在线等待
顶帖有分.....
我想实现一个全局返回类型   然后所有的返回类型就都按照这个规则来返回
生成变异都不报错  但是在测试调用的是报错
类型 System.Collections.Generic.IList`1[[Zp.Dsc.Data.Models.Task.TaskEdit, Zp.Dsc.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] 的成员 Zp.Dsc.Data.Models.Task.TaskDsc.TaskEdit 是接口,因此无法将其序列化。

/// <summary>
/// 全局返回类型
/// </summary>
/// <typeparam name="T"></typeparam>
public class Result<T>
{
    public bool Success { get; set; }
    public T Data { get; set; }
}
/// <summary>
/// 根据用户IP获取实体
/// </summary>
/// <param name="ip"></param>
/// <returns></returns>
[WebMethod]
public Result<User> GetUserByIp(string ip)
{
    var result = new Result<User>();
    using (var ctx = new ZpDscContext())
    {
        var UserObj = ctx.Users.FirstOrDefault(u => u.LoginIp == ip);
        result.Success = true;
        result.Data = UserObj;
    }
    return result;
}

/// <summary>
/// 根据用户IP获取实体
/// </summary>
/// <param name="ip"></param>
/// <returns></returns>
public Result<User> GetUserByIp(string ip)
{
    var result = new Result<User>();
    using (var ctx = new ZpDscContext())
    {
         var UserObj = ctx.Users.FirstOrDefault(u => u.LoginIp == ip);
         result.Success = true;
         result.Data = UserObj;
    }
   return result;
}

//这样写就不报错  但是不是我想要的
[WebMethod]
public int test(string ip)
{
   return GetUserByIp(ip).Data.UserId;
}

望大师赐教  在线等待  感激不尽....
c# class

------解决方案--------------------
把全局类型那个类标记为可序列化

 [Serializable()] //加上这个
        public class Result<T> 

public bool Success 
{
 get; set; 
}
 public T Data 
{ get; set;
 }
 }

------解决方案--------------------

我以前项目中也用到过类似的东西,PageData{TotalCount,PageObject}。
完全没有问题啊。
------解决方案--------------------
顶 lz