我开发了一个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
中进行转换答案 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版本?