- PR -

Dictionary型をオリジナルのクラスにしたい

投稿者投稿内容
ろーちゃん
ベテラン
会議室デビュー日: 2005/05/26
投稿数: 79
投稿日時: 2005-06-01 16:09
VB.NETでDictionary型を使おうとすると、Microsoft Scripting runtimeを参照設定しないといけません。で、Dictionary型を継承し、オリジナルのクラスを作りDLLにして、他のプロジェクトで使いたいのですが。できているソースはこんな感じですが


'' Dictionary型
Imports Scripting
Public Class SSCollection
Private mDictionaryData As New Scripting.Dictionary

Public Sub Add(ByVal key As String, ByVal value As String)
mDictionaryData.add(key, value)
End Sub

 
〜〜〜〜〜〜〜〜〜

End Class

このクラスを使いたい側では

Dim dic As New SSCollection
dic.Add("key1", "val1")

はいけるのですが、

Dim dics(0) As SSCollection
dics(0).Add("key1", "val1")
のような配列ができません。
どうすればよいでしょうか?
117
ベテラン
会議室デビュー日: 2005/05/09
投稿数: 94
お住まい・勤務地: 大阪府
投稿日時: 2005-06-01 16:18
> Dim dics(0) As SSCollection
> dics(0).Add("key1", "val1")

インスタンスが生成されてない様子ですが…記述ミス?

#サンプルコードを見る限りでは System.Collections.Hashtable 使えばよいのではと
思いますがいかがでしょう


_________________
# Future Is On Fire !
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-06-01 16:27
引用:

VB.NETでDictionary型を使おうとすると、Microsoft Scripting runtimeを参照設定しないといけません。で、Dictionary型を継承し、オリジナルのクラスを作りDLLにして、他のプロジェクトで使いたいのですが。できているソースはこんな感じですが



System.Collections.Specialized.HybridDictionary を使うのではダメなんですか?
_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2005-06-01 16:56
System.Collections.Specialized.StringDictionaryのような気もします。
※用途的に
TLC
大ベテラン
会議室デビュー日: 2005/05/31
投稿数: 152
お住まい・勤務地: 東京都
投稿日時: 2005-06-01 17:50
どうしても自前で実装する(値のヴァリデーションなどを厳密にするなど)場合は

 System.Collections.DictionaryBase

が提供されています。
ろーちゃん
ベテラン
会議室デビュー日: 2005/05/26
投稿数: 79
投稿日時: 2005-06-01 19:26
ご回答ありがとうございます。
Hashtableですとカラムが前後入れ替わる。
コレクションですと、値が変えれない、キーが取得できない。
ということでDictionary(これってVB6の時代のもの)というのを聞いたのですが、
例の件で参照設定したくないということで、オリジナルクラスにしようと
思いました。
VB.NETのほうで 
1)コレクションのように使えて
2)かつキーが見える
3)値が変えられる
4)Hashtableのようにカラムが前後入れ替わらない
という型(クラス)があればそれを使おうと思います。
またおねがいいたします。
117
ベテラン
会議室デビュー日: 2005/05/09
投稿数: 94
お住まい・勤務地: 大阪府
投稿日時: 2005-06-01 20:15
「カラムの前後入れ替わり」というのがよく理解できてないのですが…
(System.Collections.SortedList とかは?)

TLCさんの仰るように自作するのが早いかも
_________________
# Future Is On Fire !
TLC
大ベテラン
会議室デビュー日: 2005/05/31
投稿数: 152
お住まい・勤務地: 東京都
投稿日時: 2005-06-01 20:31
3)キーが見える

というあたりから察するに,
value から Key の逆引きをするような要件なのでは? と思いました。

自分も逆引きが必要な場面に至ったとき,
DictionaryBase から自前でつくりましたね。

一度作っておくと,いろいろとカスタマイズして使えて便利ですので,
これを機会に作成してみてはいかがでしょうか?

スキルアップ/キャリアアップ(JOB@IT)