2011-01-19 6 views
5

CodeDomは、C#メソッドを生成するときにオプションの引数を作成し、デフォルト値を指定できますか?例えばCodeDomはC#メソッドを生成するときにオプションの引数を作成できますか?

CodeParameterDeclarationExpression(typeof(int), "optionalint = 5"); 
:私はこのために簡単な回避策を見つけた

public void ExampleMethod(int required 
          , string optionalstr = "default string" 
          , int optionalint = 10) 

ソリューションは、あなただけの引数名の一部としてではデフォルト値を置くことができます

私はb/cで動作します。私はCodeDomを使用してC#コードを生成しています。複数の言語をサポートする必要がある場合は機能しません。

+1

注意あなたが行うことができますので、ちょうどこれは、それは良いアイデアだという意味ではありません:) –

+0

私はそれがエラーを起こさないことに驚いています。 – SLaks

答えて

4

はい。

[Optional]属性を追加します。
デフォルト値を指定するには、[[DefaultParameterValue(...)]属性を追加します。 (デフォルト値は0nullである場合、この属性は省略することができる。

を、私は私のブログにmore detailed explanationを書きました。

+0

デフォルト値を指定することはできますか? (ちょうどこれについての詳細の質問を更新しました)私は文字列値(例えば)にnullを渡す代わりにデフォルト値を与えたいと思います。 – NotDan

+0

@いいえ:はい。 '[DefaultParameterValue]'属性を追加してください。 – SLaks

+0

うん、それらの仕事、ありがとう。 Resharperはそれが好きではない=(私はそれがintオプションで出力する方法があればいい= 5)形式です。 – NotDan