Bagikan melalui


Referensi Objek

Sampel ObjectReferences menunjukkan cara meneruskan objek berdasarkan referensi antara server dan klien. Sampel menggunakan jejaring sosial yang disimulasikan. Jejaring sosial terdiri dari suatu kelas Person yang berisi daftar teman, di mana setiap teman adalah sebuah instans dari kelas Person, dengan daftar temannya sendiri. Ini membuat grafik objek. Layanan ini mengekspos operasi di jejaring sosial ini.

Dalam sampel ini, layanan dihosting oleh Internet Information Services (IIS) dan klien adalah aplikasi konsol (.exe).

Nota

Prosedur penyiapan dan instruksi build untuk sampel ini terletak di akhir topik ini.

Pelayanan

Kelas Person memiliki atribut DataContractAttribute yang diterapkan, dengan bidang IsReference diatur ke true untuk mendeklarasikannya sebagai tipe referensi. Semua properti memiliki DataMemberAttribute atribut yang diterapkan.

[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; }
    }
…
}

Operasi GetPeopleInNetwork ini mengambil parameter jenis Person dan mengembalikan semua orang dalam jaringan, yaitu, semua orang dalam daftar friends, teman dari teman, dan sebagainya, tanpa duplikat.

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

}

Operasi GetMutualFriends ini menerima parameter dengan tipe Person dan mengembalikan semua teman dalam daftar yang juga mencantumkan orang ini dalam daftar friends mereka.

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;
}

Operasi GetCommonFriends membutuhkan daftar tipe Person. Daftar ini diharapkan memiliki dua Person objek di dalamnya. Operasi ini mengembalikan daftar Person objek yang berada dalam daftar friends dari kedua Person objek yang terdapat dalam daftar masukan.

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;
}

Klien

Proksi klien dibuat menggunakan fitur Tambahkan Referensi Layanan Visual Studio.

Jejaring sosial yang terdiri dari lima Person objek dibuat. Klien memanggil masing-masing dari tiga metode dalam layanan.

Untuk menyiapkan, mengompilasi, dan menjalankan sampel

  1. Pastikan Anda telah melakukan Prosedur Penyiapan One-Time untuk Sampel Windows Communication Foundation.

  2. Untuk membangun solusi edisi C# atau Visual Basic .NET, ikuti instruksi di Membangun Sampel Windows Communication Foundation.

  3. Untuk menjalankan sampel dalam konfigurasi satu atau lintas komputer, ikuti instruksi di Menjalankan Sampel Windows Communication Foundation.

Lihat juga