タグ付けされた質問 「.net」

.NET Frameworkは、Microsoft Windowsオペレーティングシステム用のソフトウェアフレームワークです。これには、基本クラスライブラリ、共通言語ランタイム、および動的言語ランタイムの実装が含まれます。C#、VB.NET、F#、C ++など、多くのプログラミング言語をサポートしています。


5
ネストされたクラスを使用するタイミングと理由
オブジェクト指向プログラミングを使用すると、クラス(ネストされたクラス)内にクラスを作成することができますが、4年のコーディング経験でネストしたクラスを作成したことはありません。 ネストされたクラスは何に適していますか? クラスは、ネストされている場合、プライベートとしてマークでき、そのクラスのすべてのプライベートメンバーに包含クラスからアクセスできることを知っています。変数を含むクラス自体に変数をプライベートとして置くことができます。 では、なぜネストされたクラスを作成するのでしょうか? ネストされたクラスはどのシナリオで使用する必要がありますか、または他の手法よりも使用法の点でより強力ですか?

7
未処理の例外を処理する方法は?(アプリケーションを終了するか、生き続けるか)
デスクトップアプリケーションで未処理の例外が発生した場合のベストプラクティスは何ですか? ユーザーがサポートに連絡できるように、ユーザーにメッセージを表示しようと考えていました。ユーザーにアプリケーションを再起動することをお勧めしますが、強制することはしません。ここで説明しているものと同様:ux.stackexchange.com-予期しないアプリケーションエラーを処理する最良の方法は何ですか? プロジェクトは.NET WPFアプリケーションであるため、説明されている提案は次のようになります(これは簡略化された例です。ユーザーが[詳細の表示]をクリックして、エラーを簡単に報告してください): public partial class App : Application { public App() { DispatcherUnhandledException += OnDispatcherUnhandledException; } private void OnDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) { LogError(e.Exception); MessageBoxResult result = MessageBox.Show( $"Please help us fix it and contact support@example.com. Exception details: {e.Exception}" + "We recommend to restart the application. " + …

11
基本クラスと同じファイルでインターフェイスを宣言するのは良い習慣ですか?
交換可能かつテスト可能であるためには、通常、ロジックを備えたサービスにインターフェースが必要です。 public class FooService: IFooService { ... } 設計面ではこれに同意しますが、このアプローチで気になる点の1つは、1つのサービスに対して2つのもの(クラスとインターフェース)を宣言する必要があり、チームでは通常2つのファイル(1つクラス用とインターフェイス用)。IDE(VS2010)で[定義に移動]を使用すると、実際のクラスではなくインターフェイス(他のクラスがインターフェイスを参照するため)を指すため、ナビゲーションの難しさがもう1つあります。 FooServiceと同じファイルにIFooServiceを記述すると、上記の奇妙さが軽減されると考えていました。結局、IFooServiceとFooServiceは非常に関連しています。これは良い習慣ですか?IFooServiceを独自のファイルに配置する必要がある正当な理由はありますか?

9
ScalaがCまたはC ++で実装されなかった理由
ScalaがCやC ++ではなくJavaと.NETで実装された理由を知っている人はいますか?ほとんどの言語はCor C ++で実装されています(つまり、Erlang、Python、PHP、Ruby、Perl)。Javaおよび.NETライブラリにアクセスできること以外に、Javaおよび.NETで実装されたScalaの利点は何ですか? 更新 Scalaは、Cで実装された場合、JVMに依存するよりもより適切に調整できるため、より多くの利益を得られませんか?
28 java  c++  .net  c  scala 

4
Guid.NewGuid()がGuid.Emptyであるかどうかを確認する価値さえありますか?
私が取り組んでいるプロジェクトの1つでは、次のパターンがかなり定期的に見られます。 var guid = Guid.NewGuid().ToString(); while (guid == Guid.Empty.ToString()) { guid = Guid.NewGuid().ToString(); } GUIDは一意であることが保証されておらず、MSDNのドキュメントによると、生成されたGUIDはゼロである可能性があることを理解していますが、これは実際に計算上の意味と開発者の時間の観点からサイクルテストを送信する価値がある実用的な考慮事項ですか? ?
28 .net  security 

3
ロック文の中にどれくらいの作業を配置する必要がありますか?
私は、サードパーティソリューションからデータを受信し、データベースに保存し、別のサードパーティソリューションで使用するためにデータを調整するソフトウェアの更新プログラムの作成に取り組んでいるジュニア開発者です。当社のソフトウェアはWindowsサービスとして実行されます。 以前のバージョンのコードを見ると、次のように表示されます。 static Object _workerLocker = new object(); static int _runningWorkers = 0; int MaxSimultaneousThreads = 5; foreach(int SomeObject in ListOfObjects) { lock (_workerLocker) { while (_runningWorkers >= MaxSimultaneousThreads) { Monitor.Wait(_workerLocker); } } // check to see if the service has been stopped. If yes, then exit if (this.IsRunning() == …
27 c#  .net  concurrency  locks 

5
NInjectを使用して工場を建設する最良の方法は何ですか?
私は、MVC3でNInjectを使用した依存性注入にかなり満足しています。MVC3アプリケーションでの作業中に、私はNInjectを使用してカスタムコントローラー作成ファクトリを開発しました。そのため、作成されたコントローラーには、このコントローラーファクトリを介して依存関係が注入されます。 今、私はWindowsアプリケーションを開発し始めています、私はアプリケーション全体の依存性注入を使用したいと思います。つまり、ユニットテストを容易にするために、すべてのオブジェクトをNInjectを介して作成する必要があります。作成されたすべてのオブジェクトがNInject Factoryのみを通過するようにする必要があります。 たとえば、Button_Clickイベントで任意のWindowsフォームで次のように記述した場合: TestClass testClass = new TestClass() そしてTestClass、たとえば、上の任意の依存関係を持ってITest、それが自動的に解決されなければなりません。私が使用できることを知っています: Ikernel kernel = new StandardKenel() //AddBinding() TestClass testClass = kenel.get<TestClass>(); しかし、オブジェクトを作成するたびにこれを行うのは面倒です。また、開発者は特定の方法でオブジェクトを作成する必要があります。もっと良くできますか? オブジェクト作成用の中央リポジトリを作成すると、すべてのオブジェクト作成でそのリポジトリが自動的に使用されますか?

4
再起動するたびに、ローカルの.NETサイトが初めてロードするのに時間がかかるのはなぜですか?[閉まっている]
.NETプラットフォームに基づいてサイトを開発しています。通常、これらのサイトをローカルIISに展開します。これにより、稼働する前にそれらをテストして機能を確認できます。ただし、Windowsを再起動するたびに、サイトの初回実行に時間がかかるようです。 私はJITについて知っていますが、この質問にも気づいていますが、私の質問には答えません。 JITは、ウィンドウを再起動するたびに発生しますか?w3wp.exeプロセスの作成に関連していますか?再起動後の最初のリクエストでサイトが非常に遅いのはなぜですか?
27 .net  asp.net  performance  iis  jit 

15
より小さなクラス/メソッドを使用するようにチームを説得するにはどうすればよいですか?
免責事項:私は新参者であり(これが私の仕事の3日目です)、私のチームメートのほとんどは私よりも経験が豊富です。 私たちのコードを見ると、次のようなコードのにおいと悪いエンジニアリング手法が見られます。 多少矛盾した命名ガイドライン 可能な場合、読み取り専用としてマークされていないプロパティ 大規模なクラス-何百もの拡張メソッド(多くのタイプ)で構成されるユーティリティクラスに気付きました。2500行以上でした! 大規模メソッド-150行のメソッドをリファクタリングしようとしています。 後者の2つは本当の問題のようです。チームメイトに、より小さなクラスとメソッドを使用するよう説得したいと思います。しかし、私はそれをする必要がありますか?はいの場合、どのように? 私のチームは、メインチーム(私たちはサテライトチーム)からメンターを獲得しました。最初に彼に行くべきですか? 更新:いくつかの回答がプロジェクトについて尋ねたので、それが機能しているプロジェクトであることを知ってください。そして、私見、そのサイズの巨大なクラス/メソッドは常に悪いです。 とにかく、チームを怒らせたくありません。それが私が尋ねた理由です-私はそれをするべきですか? 更新:受け入れられた答えに基づいて何かをすることにしました:私は初心者なので、すべてを「新鮮な目」で見るので、見つけたすべてのコードの匂いに注意します(位置、それが悪い理由、どうすればできるかより良い、...)、しかし、現時点では、私はチームから敬意を集めるために一生懸命努力しています:「より良いコード」を書き、人々を知り、なぜそれをしたのかを知っています...新しいコードポリシー(命名ガイドライン、小規模なクラス、小規模なメソッドなど)についてチームに問い合わせ、可能であれば古いコードをリファクタリングします。動作するはずです、私見。 ありがとうございました。

1
関数を呼び出して、C#で待機しない
mvc4 Webアプリケーションに、別の関数を呼び出す必要があるアクションがあるコントローラーがあります。その関数で何が起こるか、つまり戻り値は私のアクションにとって重要ではありません。その関数を呼び出して、実行されるのを待つことはできませんか? 私はそれを非同期で行うことができると思いますが、私のポイントはリソースを使用せず、関数を呼び出して、それが起こるまで待つことはありません。 アドバイスをください。
26 c#  .net  asp.net  asp.net-mvc 

1
コード分​​析の目的は何ですか?いつ使用する必要がありますか?
Visual Studioのコード分析について聞いたことがありますが、使用しませんでした。私はMSDNを読みましたが、それでもコード分析の実際の使用法を理解していません。 StyleCopと同じではありませんか? どこかで、FxCopも言及されました。コード分​​析との違いは何ですか? すべてのプロジェクトでコード分析を使用する必要がありますか?同僚が行ったコードレビューは不十分ですか?

5
winformでプロジェクトを適切に構成する方法は?
少し前にwinformアプリケーションの作成を開始しましたが、その時点ではそれは小さく、プロジェクトの構成方法については何も考えていませんでした。 それ以来、必要に応じて追加の機能を追加し、プロジェクトフォルダーはどんどん大きくなっています。今では、何らかの方法でプロジェクトを構成する時が来たと思いますが、適切な方法はわからないので、質問はほとんどありません。 プロジェクトフォルダを適切に再構築する方法は? 現時点では、次のようなことを考えています。 フォーム用のフォルダーを作成する ユーティリティクラスのフォルダーを作成する データのみを含むクラスのフォルダーを作成する クラスを追加するときの命名規則は何ですか? クラスの名前を見るだけで機能を識別できるように、クラスの名前も変更する必要がありますか?たとえば、すべてのフォームクラスの名前を変更して、名前がFormで終わるようにします。または、それらのための特別なフォルダが作成されている場合、これは不要ですか? メインフォームのすべてのコードがForm1.csに収まらないようにするため 私が遭遇した別の問題は、追加する各機能でメインフォームがより大きくなっているため、コードファイル(Form1.cs)が非常に大きくなっていることです。たとえば、TabControlがあり、各タブには多数のコントロールがあり、すべてのコードはForm1.csになりました。これを避ける方法は? また、これらの問題を扱っている記事や本を知っていますか?

7
大規模なMS Accessアプリケーションを.Netに移行するためのベストプラクティスは?
最初は個人的なニーズに合わせて社内で開発された非常に巨大なMS Accessアプリケーションがあり、その後商用ソフトウェアに変換されて販売に成功しました。ソフトウェアは一種の「万能ソフトウェア」であり、ドキュメント管理システム、エンタープライズリソースプランニング、在庫管理、顧客関係管理、データ分析などのいくつかのモジュールが含まれています。アプリケーションの機能ですが、クライアントからのリクエストに応えるためには、新しいものに移行する必要があることに気付きます。 Visual Basic .Netに固執できるため、アプリケーションを徐々に.Netに移行することにしました。ここではほとんどの開発者にとって新しい言語ですが、VBAおよびVB6で実装された数十の小さなプロジェクトに関する深い知識があります。 すべてのデータ操作と検索がサーバー上で直接実行されるように、すでにアプリケーションのデータレイヤー機能をMS SQL Serverに移行し始めています。 私たちが探しているのは、拡張GUIを徐々に移動するためのベストプラクティスです(サブフォームを含む約500〜600の異なるフォーム、多言語サポートのある約200のレポートなど)。潜在的な顧客からDMSのドキュメントに非同期データ暗号化を実装するという最近の要求に従って、この部分をMS Accessから完全に切り離し、.Netで実装することもできます。 問題は、.Netアプリケーションを既存のMS Accessシステムとシームレスに統合し、特定のパラメーター(ユーザー権限など)で呼び出すことができ、このアプリケーションと実行中のMS Accessアプリケーション間のデータ交換を可能にする方法です。 編集: マーティンファウラーの著書「エンタープライズ統合パターン」にあるいくつかのプラクティスを適用して、MS Accessアプリケーションと、さまざまなニーズに合わせて.Netで実装したいくつかの小さなユーティリティを統合しようとしました。しかし、なんとか「共有データベース」パターンを使用することができただけであり、ソリューションに本当に満足していませんでした。 たとえば、POP3接続を使用してメールサーバーからすべてのメッセージを自動的にダウンロードして1つのテーブルに保存するWindowsサービスとして実行される小さなユーティリティを実装しましたが、すべての添付ファイルはファイルシステムに保存されます。 主に行ったのは、ADO.NETを使用してMDB形式のMS Accessデータベースに直接アクセスし、処理済みのデータ(上記の例のメールメッセージに関するデータなど:FROM、TO、CC、BCC、件名と本文)。 .NetのMDBデータ形式を使用してもまったく問題はありません。さらに、MDBにとどまり、ほとんどすべてをMS SQL Server 2008にアップサイズすることは望ましくありません。これにより、データ管理とスケーラビリティに関する自由度が高まります。 ここでの主な問題は、データの更新時に特定のVBAコードの実行をトリガーできるように、Accessで一種の「コールバック」を実装する方法がわからないことです。 データテーブルの更新および挿入トリガーをサポートする MS Access 2010には大きな期待がありましたが、これらのトリガーにはMS Accessマクロしか使用できず、トリガー内でカスタムVBAコードを実行する方法はありませんでした。 また、ユーザーが呼び出したデータの再クエリを模倣するために、キーストロークをMS Accessウィンドウに直接送信するソリューションもいくつか試しました。これは機能しますが、本番環境で使用できる現実的なソリューションであるとは考えていません。 MS AccessのDDEも検討しましたが、DDEコマンドを実装し、それらをインメモリデータおよびコマンド交換に使用する優れたサンプルソリューションは見つかりませんでした。 そのため、主な問題は、MS Accessと.Netアプリケーションを共存させて相互作用させることです。 EDIT2: .NetとMS Accessの間でメッセージを渡すためにVBAにMSMQライブラリを実装したことについて言及するのを忘れましたが、問題はここでもコールバックの欠如でした。マルチスレッド化は、本当に良い解決策ではありませんでした。

6
「ものの塊」ユーティリティプロジェクトを「オプション」の依存関係を持つ個々のコンポーネントに分離する
何年にもわたる社内プロジェクトでC#/。NETを使用してきた数年間で、1つのライブラリが有機的に成長して1つの巨大なものになりました。それは「Util」と呼ばれ、あなたの多くがあなたのキャリアでこれらの獣の1つを見たと確信しています。 このライブラリの多くの部分は非常にスタンドアロンであり、別々のプロジェクトに分割することができます(オープンソースにしたい)。ただし、これらを個別のライブラリとしてリリースする前に解決する必要がある大きな問題が1つあります。基本的に、これらのライブラリ間に「オプションの依存関係」と呼ぶものがたくさんあります。 これをより適切に説明するには、スタンドアロンライブラリになるのに適したモジュールのいくつかを検討してください。CommandLineParserコマンドラインの解析用です。XmlClassifyクラスをXMLにシリアル化するためのものです。PostBuildCheckコンパイルされたアセンブリに対してチェックを実行し、失敗した場合はコンパイルエラーを報告します。ConsoleColoredString色付きの文字列リテラルのライブラリです。Lingoユーザーインターフェイスの翻訳用です。 これらのライブラリはそれぞれ完全にスタンドアロンで使用できますが、一緒に使用する場合は、便利な追加機能が必要です。たとえば、との両方が必要なビルド後のチェック機能CommandLineParserをXmlClassify公開しますPostBuildCheck。同様に、はCommandLineParser、を必要とする色付き文字列リテラルを使用してオプションドキュメントを提供することを許可し、をConsoleColoredString介して翻訳可能なドキュメントをサポートしLingoます。 したがって、重要な違いは、これらがオプション機能であることです。ドキュメントを翻訳したり、ビルド後のチェックを実行したりせずに、プレーンで色付けされていない文字列でコマンドラインパーサーを使用できます。または、ドキュメントを翻訳可能にすることもできますが、それでも色付けされません。または、色付きで翻訳可能です。等。 この「Util」ライブラリに目を通すと、ほとんどすべての潜在的に分離可能なライブラリには、それらを他のライブラリに結び付けるようなオプション機能があります。これらのライブラリを依存関係として実際に必要とする場合、このものはまったく解りません。1つだけを使用する場合は、基本的にすべてのライブラリが必要です。 .NETでこのようなオプションの依存関係を管理する確立されたアプローチはありますか?

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