-
C#ASP.NET WebAPIでQuerystringパラメーターを使用してバージョン管理を行う方法は?
DefaultHttpControllerSelector Web APIのクラスは、URIで送信する適切なコントローラーアクションメソッドを選択する責任があります。 以下のようなクエリ文字列にバージョニングを実装する必要があるとします v=1 StudentsV1Controller (Version 1) v=2 StudentsV2Controller (Version 2) http:// localhost:58174 / api / student?v =1のようなクエリ文字列でバージョン情報を渡すと、DefaultHttpControllerSelectorに存在するSel
-
C#ASP.NET WebAPIで未処理の例外を処理するための例外フィルターを作成するにはどうすればよいですか?
例外フィルターは、コントローラーメソッドがHttpResponseException例外ではないunhandledexceptionをスローしたときに実行されます。 HttpResponseExceptionタイプは、HTTP応答を返すために特別に設計されているため、特殊なケースです。 例外フィルターは、System.Web.Http.Filters.IExceptionFilterインターフェースを実装します。例外フィルターを作成する最も簡単な方法は、System.Web.Http.Filters.ExceptionFilterAttributeクラスから派生し、OnExceptionメソ
-
C#ASP.NET WebAPIでacceptヘッダーを使用してバージョン管理を行う方法は?
Acceptヘッダーは、ブラウザがデータを必要とするファイル形式をサーバーに通知します。これらのファイル形式は、より一般的にはMIMEタイプと呼ばれます。 MIMEは、Multipurpose InternetMailExtensionsの略です。 バージョン管理は、以下のようなヘッダーで送信できます。 Version=1 StudentsV1Controller Version=2 StudentsV2Controller Acceptヘッダーでバージョンを処理していないため、StudentV1とStudentV2コントローラーしかないため、404notfoundエラーが発生します
-
C#ASP.NET WebAPIでカスタムメディアタイプを使用してバージョン管理を行う方法は?
メディアタイプを使用すると、APIはペイロード内のデータを解釈する方法をクライアントに通知できます。 HTTPプロトコルでは、メディアタイプは、text / html、application / json、application / xmlなどの識別子で指定されます。これらは、最も一般的なWeb形式であるHTML、JSON、XMLにそれぞれ対応します。 application / vnd.api + jsonなど、他にもAPI固有のメディアタイプがあります。 以下は、メディアタイプで送信する必要があるバージョンです。 application/vnd.demo.students.v1+json
-
C#ASP.NET WebAPIでログ記録用のLOGフィルターを作成するにはどうすればよいですか?
アクションフィルターは、アクションメソッドの実行前または実行後にロジックを追加するために使用されます。OnActionExecutingメソッドとOnActionExecutedメソッドは、アクションメソッドの実行前後にロジックを追加するために使用されます。 アクションメソッドの実行の前後にいくつかの情報をログに記録するActionFilterAttributeを実装するLogAttributeを作成してみましょう。 LogAttribute − 例 using System; using System.Diagnostics; using System.Web.Http.Contr
-
浅いコピーとは何ですか?C#のディープコピーとはどのように異なりますか?
浅いコピー − オブジェクトの浅いコピーは「メイン」オブジェクトをコピーしますが、内部オブジェクトはコピーしません。 「内部オブジェクト」は、元のオブジェクトとそのコピーの間で共有されます。 浅いコピーの問題は、2つのオブジェクトが独立していないことです。一方のオブジェクトを変更すると、その変更はもう一方のオブジェクトに反映されます。 ディープコピー − ディープコピーは、オブジェクトの完全に独立したコピーです。オブジェクトをコピーすると、オブジェクト構造全体がコピーされます。 一方のオブジェクトを変更した場合、その変更はもう一方のオブジェクトには反映されません。 例 clas
-
LINQ C#でTake演算子とSkip演算子の両方を一緒に使用するにはどうすればよいですか?
Take演算子は、配列から指定された数の要素を返すために使用され、Skip演算子は、配列から指定された数の要素をスキップします。 スキップ、シーケンスの最初の要素から始まる指定された位置まで要素をスキップします。 Take、シーケンスの最初の要素から始まる指定された位置まで要素を取得します。 例1 class Program{ static void Main(string[] args){ List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6,
-
LINQ C#プログラミングでTake演算子とSkip演算子の両方を一緒に使用する方法
Employeeクラスの2つのインスタンスeとe1を作成しています。 eにはtoe1が割り当てられます。両方のオブジェクトが同じ参照を指しているため、すべてのEqualsに対して真の期待どおりの出力が得られます。 2番目のケースでは、プロパティ値が同じであっても、それを観察できます。Equalsはfalseを返します。基本的に、引数が異なるオブジェクトを参照している場合。Equalsは値をチェックせず、常にfalseを返します。 例1 class Program{ static void Main(string[] args){ &nbs
-
C#でデフォルト以外の繰り返し値を持つ配列を作成するにはどうすればよいですか?
Enumerable.Repeat()を使用して、デフォルト以外の値で配列を作成できます。 C#で要素が繰り返されているコレクションを繰り返しました。まず、繰り返したい要素と回数を設定します。 例1 class Program{ static void Main(string[] args){ var values = Enumerable.Repeat(10, 5); foreach (var item in values){
-
C#でガベージコレクションを強制する方法は?
はい、Collect()メソッドを呼び出すことでC#のガベージコレクターを強制的に実行することができます これによりパフォーマンスのオーバーヘッドが発生する可能性があるため、これは適切な方法とは見なされません。 Collect()すべての世代の即時ガベージコレクションを強制します。 Collect(Int32)第0世代から指定された世代までの即時ガベージコレクションを強制します。 例 using System; class MyGCCollectClass{ private const int maxGarbage = 1000; sta
-
C#でUnixタイムスタンプを取得する方法
Unixタイムスタンプは、主にUnixオペレーティングシステムで使用されます。ただし、すべてのタイムゾーンの時刻を表すため、すべてのオペレーティングシステムに役立ちます。 Unixタイムスタンプは、時間を秒単位で表します。 Unixエポックは1970年1月1日に始まりました。 したがって、Unixタイムスタンプは特定の日付間の秒数です 例 DateTime.Now.Subtract()。TotalSecondsMethodを使用してUnixタイムスタンプを取得するには class Program{ static void Main(string[] args){
-
C#でのデバッグとリリースのif / thenディレクティブとは何ですか?
Visual Studioのデバッグモードとリリースモードは、.Netプロジェクトを構築するための異なる構成です。 .Netプロジェクトを段階的にデバッグするためのデバッグモードを選択し、アセンブリファイル(.dllまたは.exe)の最終ビルドのためにリリースモードを選択します。 ビルド構成を変更するには − [ビルド]メニューから[構成マネージャー]を選択し、[デバッグ]または[リリース]を選択します。または、ツールバーで、[ソリューション構成]リストから[デバッグ]または[リリース]を選択します。 #ifデバッグ内に記述されたコードは、コードがデバッグモード内で実行されている場合
-
C#でLINQおよびLambdaとの結合を利用するにはどうすればよいですか?
内部結合は、両方のテーブルに一致するか、両方のテーブルに存在するレコードまたは行のみを返します。以下に示すように、条件に基づいて複数のテーブルへの結合を申請することもできます。複数の条件での結合を申請する必要がある場合は、匿名タイプを使用してください。 以下の例では、LinqHereに参加するために使用できる2つの方法を記述しました。部門と従業員が参加します 例 class Program{ static void Main(string[] args){ var result =
-
C#で比較デリゲートを使用して複合型のリストを並べ替える方法は?
ListクラスのSort()メソッドのオーバーロードは、比較デリゲートが引数として渡されることを想定しています。 public void Sort(Comparison 比較) CompareToは、このインスタンスの値が、指定されたオブジェクトまたは他のInt16インスタンスの値よりも小さいか、等しいか、または大きいかを示す整数を返します。 C#のInt16.CompareTo()メソッドは、このインスタンスを指定されたオブジェクトまたは別のInt16インスタンスと比較するために使用されます 例 class Program{ public static
-
C#のモニターとロックの違いは何ですか?
Monitorとlockはどちらも、objects.lockへのアクセスを同期するメカニズムを提供します。lockはMonitor.Enterのショートカットであり、tryとfinallyを使用します。 ロックはショートカットであり、基本的な使用法のオプションです。 TryEnter()Wait()、Pulse()、&PulseAll()メソッドを使用して高度なマルチスレッドソリューションを実装するためにさらに制御が必要な場合は、Montiorクラスを選択できます。 ロックの例 − 例 class Program{ static object _lock = new object();
-
C#で再試行ロジックを作成するにはどうすればよいですか?
失敗した操作がある場合は常に、再試行ロジックが実装されます。失敗した操作の完全なコンテキストでのみretrylogicを実装します。 アプリケーション、サービス、またはリソースの根本的な問題を特定できるように、再試行の原因となるすべての接続障害をログに記録することが重要です。 例 class Program{ public static void Main(){ HttpClient client = new HttpClient(); dynamic res = null; &nb
-
C#の匿名クラスにインターフェイスを実装するにはどうすればよいですか?
いいえ、匿名タイプはインターフェースを実装できません。独自のタイプを作成する必要があります。 匿名型は、最初に型を明示的に定義することなく、読み取り専用プロパティのセットを単一のオブジェクトにカプセル化する便利な方法を提供します。 タイプ名はコンパイラーによって生成され、ソースコードレベルでは使用できません。各プロパティのタイプは、コンパイラによって推測されます。 新しい演算子をobjectinitializerと一緒に使用して、匿名型を作成します。 例 class Program{ public static void Main(){  
-
C#でif / elseとswitch-caseを使用する場合の違いは何ですか?
Switchは、一致式とのパターンマッチに基づいて、候補のリストから実行する単一のスイッチセクションを選択する選択ステートメントです。 switchステートメントは、1つの式が3つ以上の条件に対してテストされる場合に、if-else構文の代わりに使用されることがよくあります。 Switchステートメントの方が高速です。 switchステートメントの平均比較数は、ケースの数に関係なく1になるため、任意のケースのルックアップはO(1)です。 スイッチの使用 − 例 class Program{ public enum Fruits { Red, Green, Blue } public s
-
C#7.0のOutパラメーターの改善点は何ですか?
値は、それらが使用されるメソッドへの引数としてインラインで宣言できます。 このバージョンでは、既存のoutパラメーターが改善されています。これで、separatedeclarationステートメントを記述するのではなく、メソッド呼び出しの引数リストで変数を宣言できます。 利点 − コードは読みやすいです。 初期値を割り当てる必要はありません。 既存の構文 − 例 class Program{ public static void AddMultiplyValues(int a, int b, out int c, out int d){ &n
-
C#7.0のデコンストラクターとは何ですか?
C#では、同じプログラムで、同じ数のoutパラメーター、または同じ数とタイプのoutパラメーターを異なる順序で複数のデコンストラクターメソッドを使用できます。 これは新しいタプル構文の一部です。これはTuple<>クラスとは関係ありませんが、関数型プログラミングから取っています。 DeconstructキーワードはDeconstructorsに使用されます 例 public class Employee{ public Employee(string employeename, string firstName, string lastName){