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

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

5
ツールをサポートして.NETで単一のコーディング標準を確保する方法
おそらく、基本的な状況は誰もが知っています。チーム内の特定のコーディング標準について合意したので、今度はすべてのコーディング標準に従うようにします。 重いペアプログラミングを介してそれを行うものもあれば、コーディング標準のリストを維持し、手動でレビューするものもあります。また、Visual Studioの静的コード分析ツールを使用して、コーディング標準が適用されていることを確認するものもあります。 コーディング標準を確保するためのベストプラクティスは何ですか?どのツールを使用しますか?すべての開発者が知っておくべき重要なツールはありますか?開発ツールにコードの標準化をどのように統合しますか?
14 c#  .net  coding-style 

6
C#関数パラメーターに使用する命名規則
Parameterで渡された名前が新しい型にキャストされる場合がありますが、渡されたオブジェクトの名前は同じままである必要があります。クラス属性の場合、この演算子を使用できますが、関数のローカル変数についてはどうでしょう。広く使用されているコーディング規約。 例、 void MyFunc(BaseClass myPara) { DerivedClass _mypara = (BaseClass)myPara; } またはそれどころか void MyFunc(BaseClass _myPara) { DerivedClass mypara = (BaseClass)_myPara; } または他の慣習
14 c#  naming 

3
try / catchブロックをテストする例外を引き起こすイベントをシミュレートする方法は?
例外がどのように動作し、C#で例外をキャッチして処理する方法を理解していますが、例外が正しくキャッチされることを保証するために例外を引き起こす可能性のあるイベントをシミュレートするにはどうすればよいですか?たとえば、ネットワークの問題、データベースの問題などをシミュレートできるようなテストベッドのようなアプリケーションを実行できますか?例外はその性質上、再現するのが難しいように思われるため、コードで確実に対処できるようにすることは困難です。 私は主にC#/。NET / Visual Studioを使用して開発していますが、他の言語に関連する回答やリソースが役立つ場合があります。
14 c#  testing  exceptions 

5
.NETアプリケーション間でコードを共有する最も効果的な方法は何ですか?
私たちの仕事には、多くの基本機能を共有するいくつかの異なる.netアプリケーションがあります。クリーンなn層アーキテクチャを使用してこれらのアプリケーションを構築しましたが、同じ機能を何度か再実装したことに気付いたその瞬間にヒットしました。これは明らかにDRYに違反するため、修正する必要があります。すでに一般的なグルーコード(IoCの配線、ログ、設定)にNugetを使用していますが、すべてのアプリケーション間でデータ層とビジネス層を共有したいと考えています。このアイデアは、UIが実際に必要なビジネスレイヤーの部分のみを処理するというものです。 これは最初は簡単な問題のように見えますが、進行中の開発には落とし穴があり、どのように進めればよいかわかりません。すべてを支配するために1つのビジネスレイヤーを作成するとします。簡潔にするために、「Foundation」と呼びます。Foundationを使用するためにアプリケーションを移植しましたが、すべてが素晴らしいものです。Foundationはnugetを介してライトUIレイヤーに配布されており、見栄えが良いです。しかし、その後、アプリケーションに機能を追加し始め、トラブルに直面します。 プロジェクトAに取り組んでおり、Foundationの変更を必要とする新しい機能を追加するとします。Foundation(Foundation-A)に変更を加え、不安定なパッケージとしてNugetフィードにプッシュします。プロジェクトAは最新のnugetパッケージを取得し、すべてが良好です。一方、別の開発者がプロ​​ジェクトBに取り組んでいます。彼はソース管理から最新のFoundationを取得しますが、安定したブランチから取得するため、プロジェクトAの変更はありません。彼は変更を加え、Foundation-Bを作成しました。そして、すべてが良いです。しかし、その後、実際にコードを共有できるFoundation-AとFoundation-Bの実装機能を発見したため、それらを組み合わせます。一方、Foundation-Cは独自の変更を加えてそこに浮上しています。最終的に、Foundation-Bの運用準備が整いました。しかし、その後、プロダクションA、B、 これはうまくいくように思えますが、異なるデータベーススキーマで作業し、FoundationリポジトリのさまざまなブランチとプロジェクトA、B、Cリポジトリ間ですべてを同期させることを心配しています。おそらく多くの手作業が必要になるようで、エラーの可能性が広がります。これを可能な限り自動化したいと思います。 使用しているスタックは次のとおりです。C#、継続的インテグレーションを備えたTFS、Nuget。当社のアプリケーションはすべて、さまざまな種類のASP.NETアプリケーションです。物事を簡単にする場合は、さまざまなSCMを検討します。 さまざまなソースコードブランチでNugetを正常に保つ方法を探しています。間違ったNugetパッケージを参照するため、誤って開発コードを本番環境にプッシュしたくありません。

2
実行可能ファイルが悪意のあるまたはウイルスのようにAVから処理されるのを防ぐ方法
Windows上で実行され、ゲームのランチャーのように動作し、クライアント側のPCで自動アップデーターおよびファイル検証ツールとして機能するソフトウェアを作成しています。 私の理解していないことの1つは、私のアンチウイルスソフトウェア(Avast)が私のexeファイルを危険だと見なし、安全に使用するためにサンドボックスに入れることを求めずに起動しない理由です。 私のソフトウェアが従うべきルール、良いものとして扱われるルール、またはある種のデジタル署名などに数百ドルを支払うべきルールはありますか? MS Visual Studio 2010でC#を使用しています。 VirusTotalレポート。WebClient()クラスを使用して、リモートファイルダウンローダーとして機能するDLLインジェクションはありません。 ウイルスについて警告するようなものではありませんが、サンドボックスすることを「提案」します。スクリーンショットを見てください:

4
異なる入力パラメーターを持つワーカーのC#デザインパターン
どのデザインパターンがこの問題の解決に役立つかはわかりません。 使用するWorkerクラスを決定する「コーディネーター」クラスがあります-存在するすべての種類のWorkerについて知る必要はありませんが、WorkerFactoryを呼び出し、共通のIWorkerインターフェイスに基づいて動作します。 次に、適切なWorkerを動作するように設定し、 'DoWork'メソッドの結果を返します。 これまでは順調でした...今までは。新しいワーカークラス「WorkerB」の新しい要件があります。これは、作業を行うために追加の情報、つまり追加の入力パラメーターを必要とします。 余分な入力パラメーターを使用してオーバーロードされたDoWorkメソッドが必要なようですが、既存のすべてのワーカーはそのメソッドを実装する必要があります。これらのワーカーは本当にそのメソッドを必要としないので間違っているようです。 これをリファクタリングして、どのワーカーが使用されているかをコーディネーターに認識させずに、各ワーカーがジョブを実行するために必要な情報を取得できるようにしますが、不要な作業はワーカーに行わせませんか? 既に多くの既存のワーカーがいます。 新しいWorkerBクラスの要件に対応するために、既存の具象ワーカーを変更する必要はありません。 ここではデコレータパターンが良いと思うかもしれませんが、デコレータが同じメソッドでオブジェクトを異なるパラメータで装飾するのを見たことはありません... コードの状況: public class Coordinator { public string GetWorkerResult(string workerName, int a, List<int> b, string c) { var workerFactor = new WorkerFactory(); var worker = workerFactor.GetWorker(workerName); if(worker!=null) return worker.DoWork(a, b); else return string.Empty; } } public class WorkerFactory { public IWorker …

3
Given When Then(GWT)とArrange Act Assert(AAA)の違いは?
TDDには、アレンジアサート(AAA)構文があります。 [Test] public void Test_ReturnItemForRefund_ReturnsStockOfBlackSweatersAsTwo_WhenOneInStockAndOneIsReturned() { //Arrange ShopStock shopStock = new ShopStock(); Item blackSweater = new Item("ID: 25"); shopStock.AddStock(blackSweater); int expectedResult = 2; Item blackSweaterToReturn = new Item("ID: 25"); //Act shopStock.ReturnItemForRefund(blackSweaterToReturn); int actualResult = shopStock.GetStock("ID: 25"); //Assert Assert.AreEqual(expectedResult, actualResult); } BDDの記述テストでは、同様の構造を使用しますが、Given When Then(GWT)構文を使用します。 [Given(@"a customer previously bought a black sweater …
13 c#  unit-testing  tdd  bdd 

2
forループ内のコレクションを変更するための新しいリストを作成することは設計上の欠陥ですか?
私は最近Collection was modified、C#でこの一般的な無効な操作に出くわしましたが、それを完全に理解している間、それはそのような一般的な問題のようです(グーグル、約30万件の結果!)。しかし、リストを確認しながら変更することも論理的で簡単なことのようです。 List<Book> myBooks = new List<Book>(); public void RemoveAllBooks(){ foreach(Book book in myBooks){ RemoveBook(book); } } RemoveBook(Book book){ if(myBooks.Contains(book)){ myBooks.Remove(book); if(OnBookEvent != null) OnBookEvent(this, new EventArgs("Removed")); } } 繰り返し処理するために別のリストを作成する人もいますが、これは問題を回避しているだけです。実際の解決策は何ですか、または実際の設計上の問題は何ですか?私たちは皆これをやりたいようですが、それは設計上の欠陥を示していますか?
13 c# 

5
あるテストを別のテストの結果に依存させる方法は?
他の多くのクラスがコードのあらゆる場所で使用する一般的な静的メソッドを提供するユーティリティクラスがあるとします。 ユーティリティテストのいずれかが合格しなかった場合にテストが失敗するように、ユーティリティのコンシューマ向けのユニットテストをどのように設計しますか?あなたはそれを行うことができますか、ユーティリティクラスのテストがすべてグリーンであるかどうかを自分で確認する必要がありますか? たとえば、メッセージパーサーによって使用される(またはその出力)メッセージスプリッターユーティリティがあります。メッセージパーサーがテストされる前に、メッセージスプリッターが正しく動作することを確認したいと思います。 両方のテストを作成しましたが、それらをリンクし、1つのテストを他のテストの結果に依存させる方法はありますか? これに適したタグが見つかりませんでしたが、Visual Studioの単体テストエンジンを使用しています。

4
この方法でこのコードを書いているのはテスト可能ですが、見落としているコードに何か問題がありますか?
というインターフェイスがありますIContext。この目的のために、以下を除いて、実際に何をするかは重要ではありません。 T GetService<T>(); このメソッドが行うことは、アプリケーションの現在のDIコンテナを調べ、依存関係を解決しようとすることです。かなり標準だと思います。 ASP.NET MVCアプリケーションでは、コンストラクターは次のようになります。 protected MyControllerBase(IContext ctx) { TheContext = ctx; SomeService = ctx.GetService<ISomeService>(); AnotherService = ctx.GetService<IAnotherService>(); } そのため、各サービスのコンストラクターに複数のパラメーターを追加するのではなく(アプリケーションを拡張する開発者にとってこれは非常に面倒で時間がかかるため)、このメソッドを使用してサービスを取得しています。 今、それは間違っていると感じています。しかし、私が現在頭の中でそれを正当化している方法はこれです- 私はそれをあざけることができます。 できます。IContextControllerをテストするためにモックアップすることは難しくありません。とにかくする必要があります: public class MyMockContext : IContext { public T GetService<T>() { if (typeof(T) == typeof(ISomeService)) { // return another mock, or concrete etc etc } // etc …

2
フィギュアの回転を効率的に計算する方法は?
バイトの行列(ビットマップのような行列)で表されるFigureがあります。例の図はに示されていPicture 1ます。 目標は、特定の図の最適な回転角度を見つけることです。Figureが最適な角度だけ回転すると、X軸とY軸に平行でFigureに内接する長方形の面積が最小になります。 図に内接する長方形は、写真上で薄い灰色で示されています。ではPicture 2、あなたは図の理想的な回転が時計回りに約30度であることがわかります。 今、私はこの角度を見つける方法をアルゴリズムを知っていますが、それは非常に効率が悪いようです。こんなふうになります: 0から45までの角度でループします。 現在の角度について、すべての図形ポイントについて、新しい、回転した、位置を計算します 数字(最小および最大x、y)を含む長方形の境界を見つけ、これまでで最良の一致である場合は登録します 次の角度 これは一種のブルートフォース方式であり、小さな人物に対してはうまく機能し、適度に高速です。ただし、最大1,000万ポイントを含む数値を使用する必要があり、アルゴリズムが遅くなります。 この問題に適したアルゴリズムは何でしょうか?

2
「計算された」値をプロパティまたはメソッドとして公開する必要がありますか?
Webコンテンツ管理システムのコンテンツタイプを表すC#クラスがあります。 Webコンテンツエディターがオブジェクトの表示方法のHTMLテンプレートを入力できるフィールドがあります。基本的に、オブジェクトプロパティ値をHTML文字列に代入するためにhandlebars構文を使用します。 <h1>{{Title}}</h1><p>{{Message}}</p> クラス設計の観点から、フォーマットされたHTML文字列(置換あり)をプロパティまたはメソッドとして公開する必要がありますか? プロパティとしての例: public class Example { private string _template; public string Title { get; set; } public string Message { get; set; } public string Html { get { return this.ToHtml(); } protected set { } } public Example(Content content) { this.Title = content.GetValue("title") as string; this.Message …

2
Command自体のメソッドを処理するのではなく、Handle()でクラスCommandHandlerを分離する理由
次のようなS#arpアーキテクチャを使用して実装されたCQRSパターンの一部があります。 public class MyCommand { public CustomerId { get; set; } // some other fields } public class MyCommandHandler<MyCommand> : ICommandHandler<MyCommand, CommandResult> { Handle(MyCommand command) { // some code for saving Customer entity return CommandResult.Success; } } なぜCommandデータと処理メソッドの両方を含むクラスを持たないのでしょうか?コマンド処理ロジックをコマンドプロパティとは別にテストする必要がある場合、一種のテスト容易性の利点ですか?または、さまざまな実装で1つのコマンドを処理する必要がある、頻繁なビジネス要件ICommandHandler<MyCommand, CommandResult>ですか?

4
読み取りループを終了する方法はどれですか?
読むアイテムの数が不明なリーダーを繰り返し処理する必要があり、そのための唯一の方法は、最後まで読み続けることです。 これは多くの場合、無限ループが必要な場所です。 ブロック内のどこかに or ステートメントtrueがなければならないことを示すalways があります。breakreturn int offset = 0; while(true) { Record r = Read(offset); if(r == null) { break; } // do work offset++; } あり、二重ループ方式の読み取りが。 Record r = Read(0); for(int offset = 0; r != null; offset++) { r = Read(offset); if(r != null) { // do …

2
Haskell型クラスをC#インターフェイスで実装する
Haskellの型クラスとC#のインターフェイスを比較しようとしています。があるとしFunctorます。 ハスケル: class Functor f where fmap :: (a -> b) -> f a -> f b この型クラスをC#のインターフェイスとして実装する方法は? 私が試したもの: interface Functor<A, B> { F<B> fmap(Func<A, B> f, F<A> x); } これは無効な実装であり、実際Fに返されるべきジェネリック型にこだわっていfmapます。どのように定義すべきか、どこで? FunctorC#で実装することは不可能ですか?なぜですか?それとも別のアプローチがありますか?
13 c#  haskell 

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