共用方式為


物件參考

這個範例會示範如何以傳址 (By Reference) 方式,在伺服器和用戶端之間傳遞物件。 範例會使用模擬的「社交網路」(Social Network)。 社交網路由包含 friend 清單的 Person 類別 (Class) 組成,每個 friend 都是一個 Person 類別的執行個體 (Instance),擁有各自的 friend 清單。 這樣可以建立物件圖形。 此服務會公開 (Expose) 這些社交網站上的作業。

在這個範例中,服務是由網際網路資訊服務 (IIS) 所裝載,而用戶端是主控台應用程式 (.exe)。

Cc681330.note(zh-tw,VS.100).gif注意:
此範例的安裝程序與建置指示位於本主題的結尾。

服務

Person 類別已套用 DataContractAttribute 屬性 (Attribute),而且 IsReference 欄位設定為 true 以便將其宣告為參考型別 (Reference Type)。 所有屬性 (Property) 都已經套用 DataMemberAttribute 屬性 (Attribute)。

[DataContract(IsReference=true)]
public class Person
{
    string name;
    string location;
    string gender;
    int age;
    List<Person> friends;
    [DataMember()]
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
    [DataMember()]
    public string Location
    {
        get { return location; }
        set { location = value; }
    }
    [DataMember()]
    public string Gender
    {
        get { return gender; }
        set { gender = value; }
    }
…
}

GetPeopleInNetwork 作業會採用 Person 型別的參數並傳回網路中的所有人員,也就是 friends 清單中的所有人員、friend 的 friend 等等,但不包含重複項目。

public List<Person> GetPeopleInNetwork(Person p)
{
    List<Person> people = new List<Person>();
    ListPeopleInNetwork(p, people);
    return people;
    
}

GetMutualFriends 作業則採用 Person 型別的參數,並傳回清單中所有在其 friends 清單中亦包含這個人員的 friend。

public List<Person> GetMutualFriends(Person p)
{
    List<Person> mutual = new List<Person>();
    foreach (Person friend in p.Friends)
    {
        if (friend.Friends.Contains(p))
            mutual.Add(friend);
    }
    return mutual;
}

GetCommonFriends 作業會採用型別為 Person 的清單。 此清單應該會有兩個 Person 物件。 此作業會傳回 Person 物件的清單,這些物件都位於輸入清單中兩個 Person 物件的 friends 清單內。

public List<Person> GetCommonFriends(List<Person> people)
{
    List<Person> common = new List<Person>();
    foreach (Person friend in people[0].Friends)
        if (people[1].Friends.Contains(friend))
            common.Add(friend);
    return common;
}

用戶端

首先使用 Visual Studio 的 [加入服務參考] 功能建立用戶端 Proxy。

然後建立包含五個 Person 物件的社交網路。 這個用戶端會呼叫服務中所有三個方法。

若要設定、建置及執行範例

  1. 請確定您已執行 Windows Communication Foundation 範例的單次安裝程序

  2. 若要建置方案的 C# 或 Visual Basic .NET 版本,請遵循建置 Windows Communication Foundation 範例中的指示。

  3. 若要在單一或跨機器的組態中執行本範例,請遵循Running the Windows Communication Foundation Samples中的指示進行。

Cc681330.Important(zh-tw,VS.100).gif 注意:
這些範例可能已安裝在您的電腦上。 請先檢查下列 (預設) 目錄,然後再繼續。

<InstallDrive>:\WF_WCF_Samples

如果此目錄不存在,請移至用於 .NET Framework 4 的 Windows Communication Foundation (WCF) 與 Windows Workflow Foundation (WF) 範例 (英文),以下載所有 Windows Communication Foundation (WCF) 和 WF 範例。 此範例位於下列目錄。

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Contract\Data\ObjectReferences

另請參閱

參考

IsReference

概念

互通物件參考