2013-10-02 12 views
7

私はSimpleMembershipプロバイダを使用しており、登録時に保存する追加フ​​ィールドを追加しています。C#警告の冗長な明示的なプロパティ名

登録時に追加のフィールドを保存するには、どこでも使用されている方法を使用します。 Link

私はで呼び出さ以下SimpleMembershipプロバイダメソッドを使用し、私のHttpPostのActionResultの登録方法

WebSecurity.CreateUserAndAccount(registerModel.UserName, registerModel.Password, 
    new { FirstName = registerModel.FirstName, LastName = registerModel.LastName, CompanyName = registerModel.CompanyName}); 

追加のフィールドは型オブジェクトの値によって、メソッドのパラメータによって追加されます。これについての説明は「追加のユーザー属性を含む辞書」

これは機能します。

私の質問はJetbrains Resharper 8がインストールされていて、プロパティ名に「重複する明示的なプロパティ名」の警告が表示されます。 が、私は私のコードは次のようになります変更の警告を削除するには:

WebSecurity.CreateUserAndAccount(registerModel.UserName, registerModel.Password, 
    new { registerModel.FirstName, registerModel.LastName, registerModel.CompanyName}); 

私の質問は、私は今ので、私はもうReSharperの警告を取得しないプロパティ名を削除し、この匿名オブジェクトパラメータの 1)され、値によって渡されるので、プロパティ名がdbプロパティクラスに一致するために使用されるものはどのように分かりますか?

2)プロパティ名を持つかどうか、2)ベストプラクティスは何ですか。私はそれらを持つ想像非常に読みやすいではありませんないでそれらを持つとコードサンプルでは、​​それらが指定されていることは、むしろ1)この匿名オブジェクトのパラメータのために、私は今、どこ削除されていることが

答えて

10

私の質問を削除するよりも読みやすさのために優れています私はResharperの警告をもはや受け取らないので、プロパティ名は値によって渡されるので、プロパティ名はどのようになっているのですか?

名前は、式から(コンパイラによって)推論されます。これは、フィールドやプロパティを使用している場合にのみ機能します(リテラルやメソッドなどではありません)。これは、C#言語仕様のセクション7.6.10にあります。

2)プロパティ名を持つかどうかのベストプラクティスは何ですか。それらを持っていないことはあまり読みにくく、指定されているコードサンプルでは、​​私はそれらを持っていない方が良いと思うでしょう。

あなたとあなたのチームが常に名前を含むことができれば先に進んでください。他の人にとっては、少し冗長に感じるかもしれません。あなたのローカル慣習に合わせてR#の設定を調整するだけです。

「コードサンプルが指定されています」というあなたの主張は、大変ですが、指定されているサンプルと指定されていないサンプルがあります。特定のサンプルプロバイダ(MSDNなど)であっても、あなたが混在していると思われます。

2

propertyNamesオブジェクトを設定すると、匿名タイプのインスタンスが作成されます。これを行うと、値を割り当てるプロパティと同じ場合はプロパティ名を省略することができます。だからReSharperは名前が重複していると言っている。

あなたが個人的な好みである必要がないときは、明示的にプロパティ名を述べます。上記の規約に精通すれば、私はそれが読みやすさに害を及ぼすとは思わない。

0
  • それがどのようにプロパティ名は、それらが値nutshel anonimousタイプで

で渡されるので、DBプロパティクラスに一致するように、使用されるかを知っているんが上に作成されていますコンパイル時。したがって、コンパイラは、渡された式を使用してプロパティ名を解決します。その結果、宣言された読み取り専用プロパティを持つ非一様なクラスが生成されます。 ILを確認して、アセンブリにこのタイプが含まれ、プロパティが明示的に設定されていることを確認できます。

  • それは一人一人に依存

やないプロパティ名を持つベストプラクティスは何ですか。あなたのチームのために単一の方法を選択し、各DEVマシンで同じResharper設定を使用することをお勧めします。