无法在WCF服务中公开我的Interface手动类

时间:2014-03-19 08:41:15

标签: c# wcf

我开发了一个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

中进行转换

2 个答案:

答案 0 :(得分:0)

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

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

除了null之外,您认为它是什么?

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

您可以先阅读NullReferenceException:)

答案 1 :(得分:0)

将GetDetails的返回类型更改为IEnumerable&lt;&gt;而不是列表&lt;&gt;,它应该可以工作。

 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版本?