質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

解決済

2回答

11505閲覧

引数にDictionaryを使いたいが、Keyは使用側が間違えることがないようにしたい

TempProg

総合スコア12

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

0クリップ

投稿2016/01/23 16:16

現在、引数が非常に多いメソッドの作成をしております。
引数はオプションが多く、必ず指定しなければいけないものはそう多くありません。

そこで現在は省略可能な引数を用い、

C#

1public void Method(String param1, String param2, String option1 = null, String option2 = null, ...)

のように指定しています。

しかし処理上、それらは引数名をKeyに、その値をValueとしたDictionaryであると都合が良いです(foreachを使いたい)。現在は引数から頑張ってDictionaryを作成している状況です。
だからといって

C#

1public void Method(Dictionary<String, String> parameters)

としてしまうと、このメソッドで用いるKeyを使用側が任意に指定できてしまうため避けたいです。
そこで、うまくKeyをメソッド側が指定できるような方法が無いか考えているところです。

よろしければ、みなさんのご意見をお聞きしたいです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Keyをenumで定義してください。

投稿2016/01/23 17:13

Stripe

総合スコア2183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TempProg

2016/01/25 15:42

ご回答、ありがとうございました。確かに、今回の場合は列挙体を使ってもうまくいきそうです。
guest

0

ベストアンサー

Dictionaryのキーを呼び出し側が把握しているということは、呼び出し側の内部処理を把握しているということで、結合度が強くメンテナンス性に欠けるということになります。(HTMLタグなど、周知のものは別ですが・・・)

ぐっとこらえて、メソッド内でDictionaryを作るべきだと思います。

今回の質問に関係がないかもしれませんが、オプションも項目が多いと読みずらいので、オプションをまとめたクラスを引数にしてはいかがでしょうか?

投稿2016/01/24 18:17

iwamoto_takaaki

総合スコア2883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TempProg

2016/01/25 15:40

Dictionaryにとらわれすぎた頭しかなく、オプションのクラスを作るというところまで頭が回っていませんでした。 たしかに、この方法が一番うまく行きそうです。 ご回答、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問