无法在WCF服务中公开我的接口手册类

本文关键字:接口 我的 WCF 服务 | 更新日期: 2023-09-27 17:50:51

我已经开发了一个WCF服务,下面是一个示例TestCode来清楚地了解这个问题:

IService.cs:

[OperationContract]
List<TestClass> Display(string companyCode, string employeeId);
在这个接口中,我定义了TestClass:
public class TestClass
{
    public System.Guid Id {get; set;}
    public string Name { get; set; }
    public System.Nullable<System.DateTime> DateOfBirthOn { get; set; }
    public string CountryName { get; set; }
    public string LastName { get; set; }
}

Service1.svc.cs:

 public List<TestClass> Display(string companyCode, string employeeId)
 {
     try
     {
         TestClass oTestClass = null;
         oTestClass = new TestClass(companyCode);
         List<TestClass> oITestClass =  oTestClass.GetDetails("ABC", someid) as List<TestClass>
         if (oITestClass != null && oITestClass .Count > 0)
         {
             return oITestClass ;
         }
         else
         {
             return null;
             //logger.Debug("No Record Found");
         }
     }
     catch (Exception ex)
     {
         return null;
     }
     finally
     {
         // Nothing To Do
     }
 }

问题是我得到列表null在以下行

List<TestClass> oITestClass =  oTestClass.GetDetails("ABC", someid)

我做错了什么?

GetDetails方法返回TestClass的接口所以我必须在TestClass

无法在WCF服务中公开我的接口手册类

中强制转换

你做错的是你没有分配oTestClass变量:

TestClass oTestClass = null; // <- This _is_ null
List<TestClass> oITestClass =  oTestClass.GetDetails("ABC", someid)

你怎么能指望它不是null呢?

这是基本的,基本的,基本的语言知识。如果你不知道这些事情,我建议你远离WCF,做一些更基本的事情,直到你学会了这门语言。

您可以从阅读NullReferenceException开始:)

将GetDetails的返回类型更改为IEnumerable<>而不是List<>,它应该可以工作。

 TestClass tc = new TestClass();
 IEnumerable<ITestClass> bList = tc.GetDetails();
 IEnumerable<TestClass> dlist = bList as IEnumerable<TestClass>;

请参考http://msdn.microsoft.com/en-us/library/dd799517(v=vs.110).aspx

顺便问一下,你用的是。net的哪个版本?