1

我对网络服务真的很陌生,需要创建一个可以处理对象图的网络服务。我的典型示例是一个 CRM Web 服务,给定一个客户编号将返回一个类型为 Company 的“对象”,其集合属性为 Contacts。

IE:

[WebService]
public Company GetCompanyByCustomerNumber( string customerNumber ) {...}

将返回一个实例:

public class Company
{
....
  public List<Contact> Contacts { get { ... } }
}

能够创建 web 服务,以便可以轻松地从 Visual Studio 中使用它,这样它就可以直接与公司和相关联系人一起工作,这将是非常好的......

这可能吗?

谢谢弗雷德里克

4

2 回答 2

2

最好不要使用 ASMX Web 服务,而是使用Windows Communication Foundation (WCF)。有了它,您可以定义具有如下属性的数据协定:

[DataContract]
public class Company
{
    [DataMember]
    public Contact[] Contacts { get; set; }
}
于 2010-02-03T13:43:26.313 回答
1

似乎 .NET Framework 3.5 SP1 中的修复增加了对 DataContract 上的 IsReference 属性的支持正是我所需要的!

所以我可以写:

[DataContract(IsReference=true)]
public class Contact
{
    Company parentCompany;
    [DataMember]
    public Company ParentCompany
    {
        get { return parentCompany; }
        set { parentCompany = value; }
    }

    string fullName;
    [DataMember]
    public string FullName
    {
        get { return fullName; }
        set { fullName = value; }
    }
}

[DataContract(IsReference = true)]
public class Company
{
    string name;
    [DataMember]
    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    List<Contact> contacts = new List<Contact>();
    [DataMember]
    public List<Contact> Contacts
    {
        get { return contacts; }
    }
}

感谢所有让我朝着正确方向前进的帮助!

//弗雷德里克

于 2010-02-08T08:02:47.653 回答