2014-03-19 120 views
0

我已經開發了一個WCF服務我界面手工課,下面是一個示例TestCode以獲得清晰的認識這個問題的:無法揭露WCF服務

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 
    } 
} 

問題是我上以下行

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

我在做什麼錯誤列表null

UPDATE GetDetails方法返回的TestClass的接口,所以我必須投中的TestClass

+0

您需要向我們展示GetDetails方法的樣子... – khellang

回答

0

你在做什麼錯的是你沒有分配oTestClass變量:

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

你如何期待它不是null

這是基本的,基本的,基本的有關該語言的知識。如果你不知道這些東西,我建議你遠離WCF,並且在你學習這門語言之前做一些更基本的事情。

你可以通過閱讀有關NullReferenceException :)

+0

您的方法無效。 – user3124690

+0

不知道如何實現GetDetails方法。很難告訴你如何解決這個問題。正如@khellang指出你的代碼不能工作,因爲有一個空引用異常。 – LewisT

+0

我已更新我的問題,但它仍然返回空 – user3124690

0

變化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您使用的是哪個版本?