【发布时间】:2012-08-18 15:28:43
【问题描述】:
我正在尝试通过 WCF 传递一个对象。我可以通过strings、ints 等没问题,但是这个对象列表不起作用。
这是我的 2 个具体错误:
错误 1:
The best overloaded method match for
'test.ServiceReference1.JobsClient.FilesToControl(test.ServiceReference1.Item[])'
has some invalid arguments
错误 2:
Argument 1: cannot convert from 'System.Collections.Generic.List<test.Site1.Item>'
to 'test.ServiceReference1.Item[]'
这是我试图在 asp.net 中调用的函数:
// Commit the files
ServiceReference1.JobsClient Client = new ServiceReference1.JobsClient();
Client.Endpoint.Address = new System.ServiceModel.EndpointAddress("http://" + DropDownListSystems.SelectedValue + ":8732/FactoryAudit/");
test.ServiceReference1.ReturnClass ControlFiles_Result;
ControlFiles_Result = Client.FilesToControl(lstNewItems);
lstNewItems(我要传递的对象)定义为如下代码:
List<Item> lstNewItems = new List<Item>(); // Control Items
Item定义为:
public class Item
{
public Item(string Paramater, string Type)
{
_Paramater = Paramater;
_Type = Type;
}
private string _Paramater;
public string Paramater
{
get { return _Paramater; }
set { _Paramater = value; }
}
private string _Type;
public string Type
{
get { return _Type; }
set { _Type = value; }
}
}
现在在 WCF 服务中,我有以下接受项目列表的函数:
//Files Manager
public ReturnClass FilesToControl(List<Item> ItemsToControl)
{ return new ReturnClass(1, String.Empty, String.Empty, null, null, null); }
服务合同定义为:
[ServiceContract]
public interface IJobs
{
//Files Manager
[OperationContract]
ReturnClass FilesToControl(List<Item> ItemsToControl);
}
项目类在 WCF 中定义如下:
[DataContract]
[KnownType(typeof(List<Item>))]
[KnownType(typeof(Item))]
public class Item
{
public Item(string Paramater, string Type)
{
_Paramater = Paramater;
_Type = Type;
}
[DataMember]
private string _Paramater;
[DataMember]
public string Paramater
{
get { return _Paramater; }
set { _Paramater = value; }
}
[DataMember]
private string _Type;
[DataMember]
public string Type
{
get { return _Type; }
set { _Type = value; }
}
}
【问题讨论】:
-
我现在会更好地格式化它。谢谢你的帮助。希望我可以附上一个邮政编码示例。当代码在不同的项目和类中时,很难解释。
-
我已经更新了我的答案并删除了所有现在已经过时的 cmets。