-
Newtonsoft.jsonを使用してXMLをJsonに変換し、JsonをXMLに戻す方法は?
Json.NETは、XmlNodeConverterを使用したJSONからXMLへの変換およびその逆の変換をサポートしています。 要素、属性、テキスト、コメント、文字データ、処理命令、名前空間、およびXML宣言は、2つの間で変換するときにすべて保持されます SerializeXmlNode JsonConvertには、JSONとXMLの間で変換するための2つのヘルパーメソッドがあります。 1つ目はSerializeXmlNode()です。このメソッドはXmlNodeを受け取り、それをJSONテキストにシリアル化します。 DeserializeXmlNode JsonConvert
-
依存性注入を実装するためのさまざまな方法と、C#でのそれらの利点は何ですか?
結合された(依存する)オブジェクトを分離された(独立した)オブジェクトに注入(変換)するプロセスは、依存性注入と呼ばれます。 依存性注入の種類 DIには4つのタイプがあります: 1.コンストラクタインジェクション 2.セッターインジェクション 3.インターフェースベースのインジェクション 4.サービスロケーターインジェクション コンストラクタインジェクション コンストラクターは、パラメーター化された請負業者を通じて公開されたパラメーターをインターフェースするために使用されます。 他のクラスのオブジェクト作成として、contractorメソッドを介して依存関係を注入します。 セッタ
-
C#のディレクトリにファイルをコピーするにはどうすればよいですか?
ファイルをコピーするために、C#はメソッドFileを提供します。コピー ファイル。コピーには2つのオーバーロードがあります コピー(文字列、文字列) -既存のファイルを新しいファイルにコピーします。同じ名前のファイルを上書きすることはできません。 コピー(文字列、文字列、ブール値) 既存のファイルを新しいファイルにコピーします。同じ名前のファイルを上書きすることは許可されています。 Directory.GetFiles 指定された検索パターンに一致するすべてのファイルの名前(パスを含む)を返し、オプションでサブディレクトリを検索します。 例 static void Main (s
-
C#での流暢な検証の使用とは何ですか?C#での使用方法は?
FluentValidationは、強く型付けされた検証ルールを構築するための.NETライブラリです。検証ルールを構築するために流暢なインターフェースとラムダ式を使用します。ドメインコードをクリーンアップしてよりまとまりのあるものにするだけでなく、検証ロジックを探すための単一の場所を提供するのに役立ちます 流暢な検証を利用するには、以下のパッケージをインストールする必要があります <PackageReference Include="FluentValidation" Version="9.2.2" /> 例1 static class P
-
今年を超える場合、C#で流暢な検証を使用してDateofBirthを検証するにはどうすればよいですか?
特定のプロパティの検証ルールを指定するには、RuleForメソッドを呼び出して、検証するプロパティを示すラムダ式を渡します p.DateOfBirth) バリデーターを実行するには、バリデーターオブジェクトをインスタンス化し、Validateメソッドを呼び出して、検証するオブジェクトを渡します。 ValidationResult results =validator.Validate(person); ValidateメソッドはValidationResultオブジェクトを返します。これには2つのプロパティが含まれています IsValid -検証が成功したかどうかを示すブール値
-
Fluent Validationを使用してC#のプロパティの最小長と最大長の検証を確認するにはどうすればよいですか?
MaxLengthバリデーター 特定の文字列プロパティの長さが指定された値を超えないようにします。 文字列プロパティでのみ有効 文字列形式の引数: {PropertyName}=検証されるプロパティの名前 {MaxLength}=最大長 {TotalLength}=入力された文字数 {PropertyValue}=プロパティの現在の値 MinLengthバリデーター 特定の文字列プロパティの長さが指定された値よりも長いことを確認します。 文字列プロパティでのみ有効 {PropertyName}=検証されるプロパティの名前 {MinLength}=最小の長さ {Total
-
C#でIEnumerableをListに変換し、ListをIEnumerableに戻す方法は?
IEnumerableは、IEnumeratorインターフェイスを返す単一のメソッドGetEnumerator()を定義するインターフェイスです。これは、列挙できるすべての非ジェネリックコレクションの基本インターフェースです。 これは、IEnumerableをforeachステートメントで使用できることを実装するコレクションへの読み取り専用アクセスで機能します。 Listクラスは、インデックスでアクセスできるオブジェクトのリストを表します。 System.Collection.Generic名前空間の下にあります。 リストクラスは、整数、文字列などのさまざまなタイプのコレクションを作成す
-
C#のパス内のすべてのディレクトリとサブディレクトリを取得するにはどうすればよいですか?
ディレクトリを取得するために、C#はメソッドDirectory.GetDirectoriesを提供しています。 Directory.GetDirectoriesメソッドは、指定されたディレクトリ内の指定された検索パターンに一致するサブディレクトリの名前(パスを含む)を返し、オプションでサブディレクトリを検索します。 以下の例では、*はその位置にある0個以上の文字に一致します。 SearchOptionTopDirectoryOnly。トップディレクトリとSearchOptionAllDirectoriesのみを取得します。すべてのトップディレクトリとサブディレクトリを取得します。 注: r
-
C#で非同期voidメソッドによってスローされた例外をキャッチするにはどうすればよいですか?
同期C#コードでは、例外は、例外を処理できる適切なcatchブロックに到達するまで、コールスタックに伝播されます。ただし、非同期メソッドでの例外処理はそれほど単純ではありません。 C#の非同期メソッドには、void、Task、およびTaskの3種類の戻り値があります。戻り型がTaskまたはTaskの非同期メソッドで例外が発生すると、例外オブジェクトはAggregateExceptionのインスタンスにラップされ、Taskオブジェクトにアタッチされます。 複数の例外がスローされた場合、それらはすべてTaskオブジェクトに格納されます。 例1 static async Task Main(st
-
C#を使用して人間が読めるファイルサイズをバイト単位で取得するにはどうすればよいですか?
ディレクトリを取得するために、C#はDirectory.GetDirectoriesメソッドを提供しています Directory.GetDirectoriesは、指定されたディレクトリ内の指定された検索パターンに一致するサブディレクトリの名前(パスを含む)を返し、オプションでサブディレクトリを検索します。 ファイルを取得するために、C#はDirectory.GetFilesメソッドを提供しています Directory.GetFilesは、指定された検索パターンに一致するすべてのファイルの名前(パスを含む)を返し、オプションでサブディレクトリを検索します ファイルの長さを取得するために、
-
C#の接続プールとは何ですか?それを実現する方法は?
これらは、名前空間をインポートする(または名前空間またはタイプのエイリアスを作成する)ために使用されます。 これらは、宣言の前にファイルの先頭に配置されます。 using System; using System.IO; using WinForms = global::System.Windows.Forms; using WinButton = WinForms::Button; usingステートメントは、オブジェクトの作成やメソッド、プロパティなどの呼び出し時に例外が発生した場合でも、Dispose()が呼び出されるようにします。 Dispose()は、カスタムガベージコレク
-
C#でNullオブジェクトパターンを実装する方法は?
nullオブジェクトパターンは、可能な限りnullチェックを回避するクリーンなコードを作成するのに役立ちます。 nullオブジェクトパターンを使用すると、呼び出し元はnullオブジェクトまたは実際のオブジェクトのどちらを持っているかを気にする必要がありません。すべてのシナリオでnullオブジェクトパターンを実装することはできません。場合によっては、null参照を返し、いくつかのnullチェックを実行する可能性があります。 例 static class Program{ static void Main(string[] args){ &nb
-
IDisposableデザインパターンをC#で実装するにはどうすればよいですか?
管理されていないオブジェクトを破棄する必要がある場合は、IDisposableデザインパターン(またはDispose Pattern)を使用する必要があります。 IDisposableデザインパターンを実装するには、アンマネージオブジェクトを直接または間接的に処理するクラスでIDisposableインターフェイスを実装し、IDisposableインターフェイス内で宣言されたメソッドDisposeを実装する必要があります。管理されていないオブジェクトを直接処理することはありません。ただし、アンマネージオブジェクトを直接処理するマネージクラスを扱います。たとえば、ファイルハンドラー、接続文字列、
-
C#のディレクトリ内のすべてのファイル、サブファイル、およびそれらのサイズを取得するにはどうすればよいですか?
ファイルを取得するために、C#はメソッド Directory.GetFiles を提供します Directory.GetFiles 指定された検索パターンに一致するすべてのファイルの名前(パスを含む)を返し、オプションでサブディレクトリを検索します。 以下の例では、*はその位置にある0個以上の文字に一致します。 SearchOptionTopDirectoryOnly。トップディレクトリのみを検索します SearchOptionAllDirectories。すべてのトップディレクトリとサブディレクトリを検索します FileInfoは、長さ、名前などのファイル情報を取得します 例
-
シングルトンクラスが常にC#で封印されているのはなぜですか?
封印されたキーワードは、クラスを継承できないことを意味します。コンストラクターをprivateと宣言すると、クラスのインスタンスを作成できなくなります。 プライベートコンストラクターを使用して基本クラスを作成できますが、それでもその基本クラスから継承し、いくつかのパブリックコンストラクターを定義して、その基本クラスを効果的にインスタンス化します。 コンストラクターは継承されません(したがって、派生クラスには、基本クラスが継承しているという理由だけですべてのプライベートコンストラクターが含まれるわけではありません)。その派生クラスは、常に基本クラスコンストラクターを最初に呼び出します。 ク
-
リスコフの置換原則とは何ですか?C#で実装する方法は?
派生型は、基本型を完全に置き換えることができる必要があります。 定義: 子クラスを親クラスであるかのように扱うことができるはずです。基本的に、これは、すべての派生クラスが親クラスの機能を保持する必要があり、親が提供する機能を置き換えることができないことを意味します。 リスコフの置換前 public class Ellipse { public double MajorAxis { get; set; } public double MinorAxis { get; set; } public virtual vo
-
Facadeとは何ですか?C#で実装する方法は?
ファサードパターンは、より複雑な構造の上に配置された単純な構造です。 参加者 サブシステムは、機能を実装するクラスまたはオブジェクトですが、インターフェイスを簡素化するためにファサードによって「ラップ」または「カバー」することができます。 ファサードはサブシステムの上の抽象化レイヤーであり、適切な作業を委任するサブシステムを認識しています。 ファサードパターンは非常に一般的であるため、ほとんどすべての主要なアプリ、特にさまざまな理由でそのアプリの一部をリファクタリングまたは変更できなかったアプリに適用されます。 例 public class HomeFacade { &nb
-
インターフェイス分離の原則とは何ですか?C#でそれを実装する方法は?
クライアントは、使用しないインターフェースに依存することを強制されるべきではありません。 インターフェイス分離の原則は、クライアントが使用しないインターフェイスを実装することを強制されるべきではないと述べています。 1つのファットインターフェイスの代わりに、メソッドのグループに基づいて多くの小さなインターフェイスが優先され、それぞれが1つのサブモジュールを提供します インターフェイス分離の前 例 public interface IProduct { int ID { get; set; } double Weight { get; se
-
プロキシデザインパターンとは何ですか?C#でそれを実装する方法は?
プロキシパターンは、別の異なるオブジェクトへのアクセスを制御するための代理オブジェクトまたはプレースホルダーオブジェクトを提供します。 Proxyオブジェクトは、それを含むオブジェクトと同じ方法で使用できます 参加者 サブジェクトは、RealSubjectとプロキシの共通インターフェースを定義して、RealSubjectが期待される場所ならどこでもプロキシを使用できるようにします。 RealSubjectは、プロキシが表す具体的なオブジェクトを定義します。 プロキシはRealSubjectへの参照を維持し、それへのアクセスを制御します。 2つを交換可能に使用できるように、RealSub
-
依存性逆転の原則とは何ですか?C#で実装する方法は?
高レベルのモジュールは、低レベルのモジュールに依存するべきではありません。どちらも抽象化に依存する必要があります。抽象化は詳細に依存するべきではありません。詳細は抽象化に依存する必要があります。この原則は、主にコードモジュール間の依存関係を減らすことに関係しています。 例 依存性逆転の前のコード using System; namespace SolidPrinciples.Dependency.Invertion.Before{ public class Email{ public string ToAddress {