コレクションの操作 by Mssenger Library

投稿日 : 2008年10月6日 20:46

 Endpointの取得・設定 by Messenger Library にて、以下のコードのように列挙子を使用したものを書きましたけど、Messenger Libary 1.0でもEndpointsコレクションはItemプロパティを持っているので列挙子を使う必要がなかったですね。

// user は Microsoft.Live.Messenger.User オブジェクト
var es = user.get_endpoints().getEnumerator();
while (es.moveNext()) {
    var e = es.get_current();
    alert(e.get_name());
}

 書き直すと、こうなります。CountプロパティとItemプロパティを使っています。こっちの方がわかりやすいですね。

var endpoints = user.get_endpoints();
for (var i = 0; i < endpoints.get_count(); ++i) {
    alert(endpoints.get_item(i).get_name());
}

 さて、Messenger Library 2.5ではすべてのコレクションがItemプロパティによるアクセスができるようになっています。たとえば次のようなUser.Contactsプロパティを操作するコードは、

var contacts = Sample.User.get_contacts().getEnumerator();
while (contacts.moveNext()) {
	var c = contacts.get_current(); // Contactオブジェクト取得
	var address = c.get_currentAddress(); // CurrentAddressプロパティの参照
	address.get_presence().add_propertyChanged(Delegate.create(null, Sample.memberPresencePropertyChanged));
}

こう書き直せます。

var contacts = Sample.User.get_contacts();
for (var i = 0; i < contacts.get_count(); ++i) {
    var address = contacts.get_item(i).get_currentAddress();
    address.get_presence().add_propertyChanged(Delegate.create(null, Sample.memberPresencePropertyChanged));
}

 ばしばし、Itemプロパティを使っていきましょう。

コメントの入力
タイトル
名前
Url
コメント