Scenario:
I wanted to store few documentIDs in my DataMember. I thought of using Generic List
Cannot implicitly convert type 'string[]' to System.Collections.Generic.List
Workaround:
The representation of a List is equivalent to the representation of a ArrayList. So it will just work if you use the Arraylist at the client side
Solution:
Right click the Service reference > Configure Service Reference > Select 'System.Collection.Generic.List' from Collection type drop down menu.
But i wanted to still use Generic List, so this is how i did it.
Here's the code.
IService1.cs:using System;
Service1.cs:
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Collections;
namespace TestWCF
{
[ServiceContract]
public interface IService1
{
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
}
[DataContract]
public class CompositeType
{
private List<string> lists;
[DataMember]
public List<string> Lists
{
get { return lists; }
set { lists = value; }
}
}
}using System;
Code:
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace TestWCF
{
public class Service1 : IService1
{
public CompositeType GetDataUsingDataContract(CompositeType composite)
{
composite.Lists = new List<string>();
composite.Lists.Add("D");
return composite;
}
}
}using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TestWCFClient
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
ServiceReference1.CompositeType composite = new ServiceReference1.CompositeType() ;
ServiceReference1.CompositeType composite2 = new ServiceReference1.CompositeType() ;
ServiceReference1.Service1Client sc = new ServiceReference1.Service1Client();
composite2 = sc.GetDataUsingDataContract(composite);
MessageBox.Show(composite2.Lists.Count.ToString());
}
}
}
Friday, April 10, 2009
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment