タグ付けされた質問 「c#」

C#は、Microsoftが.NETプラットフォームと並行して作成した、マルチパラダイムで管理されたガベージコレクションのオブジェクト指向プログラミング言語です。

2
単体テストでプロジェクトを「使用」するか、それとも同じ名前空間を持っていますか?
バックグラウンド C#.NETでプロジェクトに取り組んでいますが、Visual Studioのソリューションに新しい単体テストプロジェクトを追加しました。私がこれをいつもやっている方法は: 新しい単体テストプロジェクトを作成します。 そのプロジェクトに、テスト中のプロジェクトへの参照を含めます。 プロジェクトを含める(using)だけです。 あなたができる他の方法は... 新しい単体テストプロジェクトを作成します。 そのプロジェクトに、テスト中のプロジェクトへの参照を含めます。 作るユニットテストプロジェクトが持つ名前空間を共有テスト中のプロジェクトを。 質問 .NETの世界のプロジェクトでこれを行うための受け入れられた方法はありますか、またはこれは単なる意見であり、それ以上のものはありませんか?

4
ダーティデータベースを回避するための統合テスト中のクリーンアップと配置のプラクティス
私はC#でテストをコーディングしていますが、次の構造で解決しました。 try { // ========== // ARRANGE // ========== // Insert into the database all test data I'll need during the test // ========== // ACT // ========== // Do what needs to be tested // ========== // ASSERT // ========== // Check for correct behavior } finally { // …

2
C#でカスタム例外を作成するタイミング
COMポートを介して単純なハードウェアデバイスとインターフェイスするクラスを作成しています。デバイスはさまざまなモードを使用するように構成できるため、私のクラスにはタイプSetOperatingModeを取り込む関数があります。次のようになります。enumUsbDeviceMode class UsbDevice { public void SetOperatingMode(UsbDeviceMode mode) { byte[] buffer = new byte[4]; buffer[0] = 0x5A; buffer[1] = 0x02; buffer[2] = (byte)mode; buffer[3] = 0x00; //IO_TYPE is always 0 in this case. _port.Write(buffer, 0, 4); int read = _port.Read(buffer, 0, 2); bool successfulSet = (read == 2 && buffer[0] …

7
resxファイルに代わるものは何ですか
私はWindowsアプリケーションを開発していて、ラベル、ラジオボタン、ボタン、チェックボックス、グリッドの列ヘッダーのすべてのテキストを1か所に保存したいと考えています。クラスファイル、xmlファイル、データベーステーブル、リソースファイルを使用してみました。 クラスファイルがこれらすべてのテキストを保存するための最良の方法であることがわかりましたが、別の方法があることを知りたいですか?クラスファイルを使用している場合、テキストが変更された場合はプロジェクトを再コンパイルする必要があります。 リソースファイルは、大量のデータに対して適切に機能しますか?辞書や変数へのデータの保存はどうですか?

3
アプリケーションにはどのような証明書が必要ですか?
Visual Studioを使用して作成した無料のC#ソフトウェアをリリースしています。将来的には、これらのソフトウェアの一部が有料になる可能性があります。彼らのためにどんな種類のライセンスも購入する必要があるのか​​と思っていましたか? ソフトウェアを販売しようとしているが、アプリケーションについてはどうですか? ウイルス対策/ブラウザがアプリケーションを信頼できないものとしてフラグ付けしたくないのです。任意の提案をいただければ幸いです。

3
C ++で.netアプリをプログラミングすることをお勧めしますか
私が理解できることから、C#は.NETアプリをコーディングする際の事実上の言語です。C ++で.NETアプリ(ASP.NET、WinPhone 7、GUIなど)をプログラミングすることをお勧めしますか?この道を進むことを選択した場合の落とし穴と欠点は何ですか? 共有いただきありがとうございます。

4
禁止されているサードパーティの方法について警告する
注:この質問は、JavaまたはC#で記述されたコードに関するものです。 私はいくつかの大規模なプロジェクトを管理しており、サードパーティ/ SDKのメソッドで問題(必ずしもバグではない)を発見し、代わりに使用する必要がある独自の拡張機能を作成しました。これらの方法を使用することは、このプロジェクトでは推奨されないことを開発者に覚えておいてください。 独自のライブラリを使用していた場合は、そのメソッドを簡単に削除したり、廃止/非推奨にしたりできますが、自分で作成していないライブラリに対してはそうすることはできません。 例として、2つのオーバーロードを提供するライブラリを使用します。 acme.calculate(int quantity_, double priceInUsDollars_); acme.calculate(int quantity_, string currencyCode_, double priceInCurrency_); 私たちは開発者が常に最初のものを使用して、私たち自身の標準的な為替レートシステムから米ドルで価格を得ることを望んでいます。そして、IDE(Eclipse / Visual Studio)が最初の開発者を使用するときに開発者に警告するのは良いことです。コンパイラの警告でも十分です。 今のところ、現状では、コードレビュー担当者にそのようなエラーを発見してもらう必要があります。ご覧のとおり、これは信頼できるアプローチではありません。 準備ができている1つの方法は、独自のチェックスタイルチェック(http://checkstyle.sourceforge.net/writingchecks.html)を記述することです。でも、何か使えるシンプルなものはないのかと思っていました。私が説明したようなIDE /コンパイラの警告を達成する方法を知っている人はいますか? IDE /コンパイラ以外のソリューションは大歓迎です。
9 java  c#  coding-style  ide 

5
依存関係注入(C#)をいつ使用するべきか[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 10か月前に閉鎖。 依存性注入(DI)の概念を確実に理解したいと思います。まあ、私は実際にコンセプトを理解しています。DIは複雑ではありません。インターフェイスを作成し、それを使用するクラスにインターフェイスの実装を渡します。これを渡す一般的な方法はコンストラクターですが、セッターやその他のメソッドで渡すこともできます。 DIをいつ使用するかがよくわかりません。 使用法1:もちろん、インターフェースの実装が複数ある場合にDIを使用するのは論理的であるようです。SQL Serverのリポジトリがあり、次にOracleデータベースのリポジトリがあります。どちらも同じインターフェースを共有し、実行時に必要なインターフェースを「挿入」します(これが使用される用語です)。これはDIではありません。ここでは基本的なOOプログラミングです。 使用法2:特定のメソッドをすべて持つ多くのサービスを持つビジネスレイヤーがある場合、各サービスのインターフェイスを作成し、これが一意であっても実装を注入することをお勧めします。これはメンテナンスに適しているからです。これは私が理解できないこの2番目の使用法です。 私は50のビジネスクラスのようなものを持っています。それらの間で共通するものはありません。いくつかは、3つの異なるデータベースでデータを取得または保存するリポジトリです。一部のファイルの読み取りまたは書き込み。一部は純粋なビジネスアクションを行います。特定のバリデーターとヘルパーもあります。一部のクラスは異なる場所からインスタンス化されるため、課題はメモリ管理です。バリデーターは、いくつかのリポジトリーや、同じリポジトリーを再度呼び出すことができる他のバリデーターを呼び出すことができます。 例:ビジネスレイヤー public class SiteService : Service, ICrud<Site> { public Site Read(Item item, Site site) { return beper4DbContext.Site .AsNoTracking() .SingleOrDefault(y => y.SiteId == site.Id && y.ItemId == item.Id) } public Site Read(string itemCode, string siteCode) { using (var itemService = new ItemService()) …

4
C#でのコンストラクターの結果の確認
これと同様の方法で、nullのコンストラクターの結果をチェックする癖がある同僚とコードベースの作業をしています。 Person p = new Person(); if (p != null) { p.Name = "John Smith"; } .NETランドスケープについての私の理解は、例外がスローされない限り、コンストラクターは割り当てを満たされないままにしないということです。したがって、上記の場合、nullチェックは役に立ちません。いずれかpが割り当てられる、または例外は、プロパティセッターをスキップさせるスローされます。 ついでにこれについて同僚に尋ねたところ、「念のため」という言葉に沿って受動的な答えを得ました。私はこの種の「パロニアプログラミング」が好きではありません。読みやすさが損なわれ、不必要に循環的複雑度が増すと思います。このため、この行為の中止を正式に要請したいと思います。これは合理的な要求ですか?何か不足していますか?

2
ゼロ引数コンストラクターと常に有効なエンティティ
私は最近、Always Validドメインエンティティについて多くの読書をしました。エンティティが常に有効であることを保証するために、私は次のことを行う必要があると信じるようになりました。 1)ここで説明されているように、プリミティブな強迫観念を取り除き、値オブジェクトコンストラクターに検証/ドメインルールを配置します:https : //enterprisecraftsmanship.com/2016/09/13/validation-and-ddd/。2)ここで説明されているように、検証またはドメインルールをエンティティまたはプロパティセッターのコンストラクタに配置します:http ://gorodinski.com/blog/2012/05/19/validation-in-domain-driven-design-ddd/ 。 ただし、次に、https://github.com/gregoryyoung/mrなどのいくつかのオープンソースプロジェクトを調べます。私が理解していることから、このプロジェクトの作成者は常に有効なドメインモデルの擁護者ですが、それでもInventoryItemクラス(https://github.com/gregoryyoung/mr/blob/master/SimpleCQRS/Domain.cs)を調べます。私はこれを行うことができることに気づきました: InventoryItem inventoryItem = new InventoryItem(); またはこれ: InventoryItem inventoryItem2 = new InventoryItem(Guid.Empty,null); 私の考えでは、これはエンティティが無効な状態で初期化されることを意味します。これは、私が最近見た他のすべてのオープンソースプロジェクトにも当てはまるようです。たとえば、次のプロジェクトです。https://github.com/dcomartin/DDD-CQRS-ES-Example/blob/master/src/Domain /Customer.cs。 これらのオープンソースプロジェクト(https://martinfowler.com/bliki/ContextualValidation.html)にコンテキスト検証があることに気づきました。また、ドメインモデルにマップする場合、ORMにはデフォルトの空のコンストラクターが必要であることも理解しています。 ドメインオブジェクトは、引数なしのコンストラクタを使用してデフォルト値で初期化されている/空/ null値で初期化されている場合、有効な状態ですか?

4
あなた自身のクラスのための拡張メソッドをいつ書くべきですか?
私は最近、Addressどこかに、次に別の場所で定義されたデータクラスを持つコードベースを見ました。 fun Address.toAnschrift() = let { address -> Anschrift().apply { // mapping code here... } } このメソッドをアドレスに直接指定しないと混乱を招きました。拡張メソッドを使用するときに確立されたパターンまたはベストプラクティスはありますか?それとも、その本はまだ書かれている必要がありますか? この例のKotlin構文にも関わらず、C#またはそれらの機能を備えた他の言語にも適用されるので、一般的なベストプラクティスに興味があることに注意してください。
8 c#  design 

3
これらのユーザーコントロールが1回しか使用されない場合でも、ユーザーコントロールを使用してWPFフォームを構造化することは良い習慣ですか?
私はMVVMを使用してWPFアプリケーションを開発していて、最善の方法を学んでいます。 セレクター付きのWPFフォーム、検索フィールド付きの2つのリスト、およびその他の要素があります。現在、すべてが1つの形式になっており、機能します。しかし、今ではそのフォームのVMは800行を超えており、まだ完成していません。 このフォームとコードをよりよく構成したいと思います。リージョン、部分クラスを含むファイル、ユーザーコントロールについて考えました。ユーザーコントロールは、いくつかのコントロールとロジックをカプセル化しているため、最適だと思います。ユーザーコントロールを使用すると、そのウィンドウとVMのコード量が大幅に削減されます。 これを正しく行うために、「Pro WPF 4.5 In C#4th Edition」という本の第18章-カスタム要素とColorPickerUserControlサンプルに取り組みます。サンプルは、3つのスライダーを備えたカラーピッカーに関するもので、150行のコードが含まれています。 私はそれがどのように機能するか理解していると思いますが、そのサンプルのように機能が非常に制限されていても、ユーザーコントロールを作成するのは大変な作業だと思います。これらのコントロールを数回使用する場合、これを行うのが理にかなっていることを理解しています。しかし、コントロールを1回だけ使用し、これをフォームの構造化のみに使用する場合、これはほとんど利益を得るために多くの作業と思われます。 私の質問は次のとおりです。これらのユーザーコントロールが1回だけ使用される場合でも、ユーザーコントロールを使用してフォームを構造化することは良い習慣ですか?そうでない場合、より良い代替手段はありますか? 編集(読む必要はありませんが、詳細情報のみ):原則について学びたかったので、これまで詳細は書きませんでしたが、26の興味深い答えの17を読んだ後、ここにいくつかの詳細があります:このフォームは、音楽のタイトルを選択するためのものです。 グループA:(可能なユーザーコントロールA)は、アーティストまたはアルバムによる選択、ビデオの有無にかかわらず、おそらく発行年など、選択のタイプについてです。 グループB:このリストには、Aの基準に従ってフィルタリングされたアーティスト名が含まれています。ユーザーはリストをフィルタリングできます。つまり、「トップ」を含むアーティスト名のみを表示できます。 グループC:このリストには、Aの基準(オーディオまたはビデオ)を使用して、Bで選択したアーティストのタイトルが表示されます。Bと同様にフィルタリングできます。つまり、「あなた」を含むタイトルのみです。 ほとんどのロジックはVM(フォームのDataContext)で発生します。AとBのリストはデータベースからのものです。リストはフィルタリングされ、プレゼンテーション用に準備されます(つまり、同じ名前であるが異なるアルバムにある複数のタイトル)。ユーザーは、ダブルクリックしてCリストのタイトルを選択するか、別のWPFフォームにドラッグアンドドロップします。 必要なもの:簡単に修正できるように、読み取り可能なコードが必要です。別のフィルターを追加する場合、つまり女性アーティストのみを表示する場合は、ユーザーコントロールAに移動して、男性および/または女性アーティストのチェックボックスを追加するだけでよいとしましょう。 現在の形式のXAMLは問題なく、適切に構造化されています。ただし、VMには上記すべてのコードが含まれています。コンストラクター、コマンドセクション、プロパティ、バッキングフィールドにいくつかあります。私は今でも物事を見つけることができますが、コードがより構造化されていればもっと良いと思います。これがユーザーコントロールについて考える理由です。 MVVMの背後にあるロジックは非常に理にかなっていると思うので、MVVMをフォローしようとしています。しかし、私は理論的な実践の熱狂的な信者ではありません。つまり、VMで5行のCodeBehindまたは50行で何かを実行できる場合、CodeBehindで実行する可能性があります。私の質問は、WPFで構造化フォームを作成する方法の原則についてです。上記で説明したフォームは良い例ですが、答えはこの1つのフォームに集中するのではなく、WPFフォームを構成する方法、つまりユーザーコントロールを使用する(または使用しない)方法に集中する必要があります。 ユーザーコントロールが多くの作業を必要とする理由について:依存関係プロパティ、ルーティングイベントなどがあります。これはすべて、バッキングフィールドとINotifyを使用した「通常の」プロパティよりもはるかに複雑に思えます。しかし、依存関係プロパティ、ルーティングイベントなどに慣れる必要があるだけかもしれません。
8 c#  wpf  user-control 

2
呼び出し元はHTTPリクエストによって呼び出されたコードの実行を中止できますか?
私が作成しているAPIにHTTPリクエストを行うサードパーティは、APIが1秒未満で応答することを要求しています。私の質問は、彼らが道持っているされて(文字通りあらゆるの範囲内で、道をHTTPおよび/またはTCP / IPプロトコル)それは長い1秒以上かかる場合は、私のコードの実行を中止するには?

4
MVC-ビュー間でコンテキスト情報を共有する
長い投稿は申し訳ありません。質問があります。ただ我慢してください。 少しのコンテキスト 私たちは、さまざまなユーザー設定、ユーザーが所属するグループ、ユーザーの出身地などに基づいて大幅に適応する必要があるサイトを持っています。以前はページのモデルに関連ビットを含めていたため、ページに、ユーザーが特定の年齢を超えているかどうかを示すテーブルがある場合、モデルでは次のようにします。 //model public PageModel { public bool ShowTable {get;set;} } //controller public PageController { public ActionResult ShowPage() { var model = new PageModel() { ShowTable = User.Age > 21 }; return View(model); } } //view @if(Model.ShowTable) { <table>Some Html here</table> } これは、どのユーザーに何を表示すべきかを知るためにすぐに非常に複雑になりました。この問題に対処するために、特定のものが表示または非表示になるタイミングに関するすべてのロジックを一元化しました。このクラスを呼び出したUserConfigurationところ、(ほとんどの場合)何を表示すべきかを示すブール値を返す一連の関数が含まれていました。これにより、ユーザーに表示する必要がある一連の仕様とテストを設定できました。UserConfigratuion次に、これは、すべてのページモデルが継承する必要がある基本クラスに配置されました。そのため、現在、次のようになっています。 //UserConfiguration public UserConfiguration { private readonly …
8 c#  mvc  asp.net-mvc 

4
複数の市場を処理するためのコード構造?(米国の州ごとに異なるビジネスルール)
アプリを入手できる各ビジネス市場(国や州)ごとに要件がわずかに異なるアプリを開発しています。それは一般的な状況のようですが、このシナリオのコード/モジュールの構造化に関する良い記事を見つけることができないようです。 これはC#アプリであり、戦略パターンとテンプレートパターンの間で議論していますが、フォルダー構造と命名規則の考慮事項もあります。各州の個別のプロジェクトはすぐに管理できなくなるようです(たとえば、5つのコアサービスX 50州のカスタムプロジェクト)= 250プロジェクト!!)おそらく、サービスごとに1つのカスタムプロジェクトが、州ごとにサブフォルダーに編成された専門化を処理していますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.