問題タブ [automatic-properties]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - JSON の C# 自動プロパティ デシリアライゼーション
JSON で表された JavaScript オブジェクトを適切な C# クラスに逆シリアル化する必要があります。自動プロパティの優れた機能を考えると、フィールドだけではなく、これらのクラスにそれらを含めることをお勧めします。残念ながら、.NET シリアライゼーション エンジン (少なくともデフォルトでは) は、デシリアライゼーションの自動プロパティを完全に無視し、JavaScript オブジェクトには明らかに存在しないバッキング フィールドのみを考慮します。
バッキング フィールドに名前を付ける標準的な方法がないことを考えると、正直に言うと、「C# バッキング フィールドがあるように見える JavaScript オブジェクトを作成しましょう」というアプローチを気にしたくありません。シリアライゼーション エンジンにバッキング フィールドを何らかの形で無視させ、プロパティを直接使用させることができれば、JavaScript フィールドを C# 自動プロパティにシリアライズできます。残念ながら、これがどのように行われるのか、またはこれがまったく可能かどうかはわかりません。どんなアイデアでも大歓迎です。
編集:ここに例があります:
Javascript:
これは、「{Name: 'Whiskers'}」にシリアル化されます。
C# クラス:
そして、失敗する逆シリアル化コード:
また、バッキング フィールドを探しているために失敗したことは、例外から明らかです。
EDIT2 :これが役立つ場合は例外です(内部例外はありません):
System.Runtime.Serialization.SerializationException
<Name>k__BackingField, <Breed>k__BackingField
「必要なデータ メンバー ' ' が見つからなかったため、データ コントラクト タイプ 'Test.Cat' を逆シリアル化できません。」
.net - C#3.0で自動プロパティをカスタマイズする方法
C#3.0より前は、次のように実行していました。
今、これを行います:
(フィールドがありません!)ゲッターまたはセッターをカスタマイズする場合、フィールドはC#2.0の場合のように明示的である必要がありますか?
c# - C#の速記ゲッター/セッターの乱用はどのくらいの頻度で見られますか?
C#では、他の言語よりも簡単な方法でゲッター/セッターを作成できます。
これにより、直接アドレス指定できない内部プライベート変数が作成され、外部プロパティ「FooBar」を使用して直接アクセスできます。
私の質問は-これが乱用されているのをどのくらいの頻度で見ますか?カプセル化のベストプラクティスに違反する可能性が高いようです。誤解しないでください。私はそれを適切に使用し、読み取り専用の書き込み専用タイプのプロパティに部分的なバリエーションを使用していますが、コードベースの他の作成者からの不快な経験は何ですか?
明確化:意図された乱用の定義は、プライベート変数が適切な場合にそのようなプロパティを作成することです。
c# - これは自動プロパティの正しい構文ですか?
私は長い間プログラミングをしているので、言語の変更についていくのが難しい場合があります...
.net v2 の後でこのようなプロパティを設定しても本当に大丈夫ですか
内部フィールドは必要ありませんか? 最近、コンパイラがこれを処理しているようですか?
c# - 仕様に自動プロパティの実装はありますか?
Fooという名前のプロパティの基になるフィールドが「k__BackingField」と呼ばれるという事実に頼ることはできますか?
c# - パブリックフィールドと自動プロパティ
フィールドを外部に公開するのではなく、クラスフィールドのgetterメソッドとsetterメソッド(C#のプロパティ)を作成してカプセル化を保護する必要があるとよく言われます。
ただし、フィールドが値を保持するためだけに存在し、取得または設定するための計算を必要としない場合がよくあります。これらについては、私たち全員がこの番号を実行します。
ええと、私には告白があります、私はそれをすべて書くことに耐えられませんでした(実際、それはそれを書く必要はなく、それを見る必要がありました)、それで私は不正に行き、公共の場を使いました。
次に、C#3.0が登場し、自動プロパティが追加されたことがわかります。
どちらがきれいで、私はそれに感謝していますが、実際には、単にパブリックフィールドを作成することと何がそんなに違うのですか?
c# - C# 自動プロパティでオブジェクトの新しいインスタンスを返す方法
C# 自動プロパティを使用して、オブジェクトの新しいインスタンスを作成することは可能ですか?
C#でこれを行う方法が大好きです:
最初にインスタンス化する必要がある List のようなオブジェクトに対してこれを行うことは可能ですか?
すなわち:
c#-3.0 - C# 3.0 : 自動プロパティ - コンパイラによって作成されたプライベート変数の名前は何でしょう?
.NET 3.5 の新機能をチェックしていたところ、C# 3.0 で使用できることがわかりました。
それ以外の
自動プロパティを使用すると、 Name のプライベート変数名は何になりますか? インターネット上のチュートリアルでは、コンパイラが自動的にプライベート変数を作成すると述べています。このクラスのメソッドで使用したい場合、プライベート変数を使用/アクセスするにはどうすればよいですか?
c# - C# Automatic Properties
I'm a bit confused on the point of Automatic properties in C# e.g
I get that you are saving code by not having to declare a private variable, but what's the point of a property when you are not using any get or set logic? Why not just use
I'm not sure what the difference between these 2 statements is, I always thought you used properties if you wanted additional get/set logic?