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

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

4
構造体を使用して組み込み型の検証を実施する
通常、ドメインオブジェクトには、組み込みの型で表すことができるプロパティがありますが、その有効な値は、その型で表すことができる値のサブセットです。 これらの場合、値は組み込み型を使用して格納できますが、値は常にエントリの時点で検証されるようにする必要があります。そうしないと、無効な値で処理される可能性があります。 これを解決する1つの方法は、組み込み型のstruct単一のprivate readonlyバッキングフィールドがあり、そのコンストラクターが指定された値を検証するカスタムとして値を格納することです。そうすれば、このstructタイプを使用することで、検証済みの値のみを使用することが常に確実になります。 基になる組み込み型との間のキャスト演算子を提供して、値が基になる型としてシームレスに出入りできるようにすることもできます。 例として、ドメインオブジェクトの名前を表す必要がある状況を取り上げます。有効な値は、1〜255文字の文字列です。これを表すには、次の構造体を使用します。 public struct ValidatedName : IEquatable<ValidatedName> { private readonly string _value; private ValidatedName(string name) { _value = name; } public static bool IsValid(string name) { return !String.IsNullOrEmpty(name) && name.Length <= 255; } public bool Equals(ValidatedName other) { return _value == other._value; } public override bool …
9 c#  .net 

4
DALレイヤーとBLLレイヤー間でのデータとビジネスオブジェクトの取得の分離
この質問を投稿する前に、いくつか調査を行いました。他の質問や投稿の中で、そのうちの1つを以下に示します。どのように判断するか明確な心がつかめなかった。 データアクセス層内のビジネスオブジェクト リポジトリがあり、ビジネスレイヤーはリポジトリを呼び出してデータを取得します。たとえば、BLLとDALの次のクラスがあるとします。 class BllCustomer { public int CustomerId {get; set;} public String Name {get; set;} public BllAddress Address {get; set;} } class BllAddress { public int AddressId {get; set;} public String Street {get; set;} public String City {get; set;} public String ZipCode {get; set; } } class DalCustomer { …

4
この方法は純粋ですか?
次の拡張メソッドがあります。 public static IEnumerable<T> Apply<T>( [NotNull] this IEnumerable<T> source, [NotNull] Action<T> action) where T : class { source.CheckArgumentNull("source"); action.CheckArgumentNull("action"); return source.ApplyIterator(action); } private static IEnumerable<T> ApplyIterator<T>(this IEnumerable<T> source, Action<T> action) where T : class { foreach (var item in source) { action(item); yield return item; } } シーケンスの各アイテムにアクションを適用してから、それを返します。 このメソッドにPure(Resharperアノテーションからの)属性を適用する必要があるかどうか疑問に思っていました。そのためと反対の引数を確認できます。 長所: …

1
インターフェースと非同期の設計
IFolderRepositoryそのようなメソッドを持つインターフェースを作成したとしましょう: IEnumerable<Folder> GetAllFolders(); Folder GetFolderWithId(int id); void AddFolder(Folder newFolder); void ModifyFolder(Folder folderToModify, Folder folderAfterModification); void RemoveFolder(Folder folderToRemove); と私は実装DatabaseFolderRepositoryして言ってみましょうCacheFolderRepositoryDecorator。ここで「数百行後」にSkyDriveフォルダーの機能を追加したいので、追加しSkyDriveFolderRepositoryます。残念ながら、DatabaseFolderRepository実装はデータベースと通信するために同期メソッドを使用していましたが、skydrive 1では多くのasyncおよびを使用していますawait。そのような場合はどうしますか?voidメソッドで非同期とマークされている場合は、解決策ではありません(例外処理が必要)。インターフェースを変更して返す必要がありますTask<T>か?確かに上記の例では機能しますが、これらは2つのインターフェース実装クラスにすぎません。それとも、ほとんどのインターフェイスにTask戻り値の型があるべきですか(規則を必要としないので)。
9 c#  async 

3
Entity Frameworkデータベースコンテキスト(モデル)をMVVM WPFのViewModelに接続する最良の方法は何ですか?
上記の質問のように:Entity Frameworkデータベースモデル(コンテキスト)をMVVM(WPF)のviewModelに接続する最良の方法は何ですか? 私はWPFでMVVMパターンを学習しています。多くの例は、viewModelにモデルを実装する方法を示していますが、その例のモデルは単なる単純なクラスであり、エンティティフレームワークモデル(ベースファーストアプローチ)と一緒にMVVMを使用したいと思います。モデルをviewModelにワイヤリングする最良の方法は何ですか。 回答ありがとうございます。 //ctor of ViewModel public ViewModel() { db = new PackageShipmentDBEntities(); // Entity Framework generated class ListaZBazy = new ObservableCollection<Pack>(db.Packs.Where(w => w.IsSent == false)); } これは私のViewModelの通常の俳優です。もっと良い方法があると思います。リポジトリパターンについて読んでいましたが、これをWPF MVVMに適応できるかどうかわかりません

1
関連するクラスとインターフェースの命名
データソースとしてObjectParserを使用しIObjectParserDataSourceて、厳密に型指定されたオブジェクトにデータを解析するクラスを作成しました(データは、Excelファイル、テキストファイル、配列、クエリ文字列など)。 私の実装例IObjectParserDataSourceは次のとおりです。 TextFileObjectParserDataSource ExcelFileObjectParserDataSource これらのクラス名は本当に長く複雑に感じられます。 それらに名前を付けることができます: TextFileDataSource ExcelFileDataSource しかし、これはある程度のあいまいさをもたらし、IObjectParserDataSource一見しただけでは明確に関連するようにはなりませんでした。これらのデータソースの定義はクライアントコードで行われ、混乱や不確実性の可能性を最小限に抑えたいので、これは重要になります。 このようなシナリオでは、これらのクラスにどのような名前を付けますか?

2
C#で「グローバル」変数をカプセル化する方法 /ベストプラクティス
この投稿を改善してみませんか?この質問に対する詳細な回答を提供します。これには、引用と、回答が正しい理由の説明が含まれます。詳細が不十分な回答は編集または削除される場合があります。 C#で、複数のメソッドで使用する必要がある変数をカプセル化するためのベストプラクティスは何ですか?2つのメソッドの上の私のクラスの先頭で単にそれらを宣言することは問題ありませんか? また、設定ファイルのアプリ設定を使用している場合、ゲッターを使用する必要がありますか?このような... private string mySetting{ get { return WebConfigurationManager.AppSettings["mySetting"]; } } ベストプラクティスは何ですか?

3
複数の(社内)プロジェクト用の文字列翻訳データベースの構築
私たちの会社には、次のような文字列を格納する既存の翻訳ms-sqlテーブルがあります。 Id | Key | Language | Value 1 | hello-world | nl-BE | Hallo Wereld 2 | hello-world | en-GB | Hello World システムには3つの言語があり、将来的には最大で約10言語に増えると思います このテーブルは、複数の非常に異なるプロジェクト(約60のプロジェクト、主にWebサイト/ Webアプリケーションと一部のWebサービス)によって読み取られ、それぞれが翻訳データベースへのデータベース接続を開き、翻訳をキャッシュします。 フロントエンド開発者からのフィードバックは、翻訳の入力または変更のためのUIのUIの最大の欠点は、どのプロジェクトがどの文字列を使用するかを理解できないことです。 彼らは時々それを使って7つのプロジェクトを壊していることを知らずに文字列を変更します。 これで、ユーザーは次のように入力するだけthis.Translate("Hello World")で、あとはシステムが処理します。 もちろん、私はそれらを次のようなものに強制することもできますthis.Translate("Hello World","AwesomeApplication1")が、それは多くの多くのプロジェクトにわたってかなりのリファクタリングを必要とするようです。 このソリューションを提供するにはどうしますか?開発者として、翻訳に「プロジェクト名」をどのように提供しますか?これをデータベースにどのように保存しますか? 重要な注意:翻訳の再利用は一元化されたデータベースの核心なので、次のようにして翻訳を1つのプロジェクトにスコープします 1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1 5|hello-world|nl-BE|Hallo Wereld!|MyAwesomeApplicatoin2 本当に望まれるオプションではありません。 私は次のようなものが好きです: 1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1,MyAwesomeApplicatoin2 または、テーブルに名前を置くだけの外部キーと同等です。 更新 データベースを正規化するというアドバイスに基づいて、これまでに次のようなものを考え出しました。 //this allows me to …
9 c#  resources 

3
処分するものが何もない状況で「使用」することは適切ですか?
C#では、usingステートメントを使用して、ガベージコレクターを待たずにリソースを確定的な方法で破棄します。たとえば、次の目的で使用できます。 SQLコマンドまたは接続を破棄します。 ストリームを閉じ、ファイルのように基礎となるソースを解放し、 無料のGDI +要素、 等 これは、using処理するものが何もない場合にますます使用されていることに気付きましたが、呼び出し元usingが2つの個別のコマンドではなくブロックを書き込む方が便利な場合に使用します。 例: Stack Overflowチームによって作成されたMiniProfilerは、usingプロファイルするブロックを示すために使用します。 using (profiler.Step("Name goes here")) { this.DoSomethingUseful(i - 1); } 1つの代替アプローチは、2つのブロックを持つことです。 var p = profiler.Start("Name goes here"); this.DoSomethingUseful(i - 1); profiler.Stop(p); 別のアプローチはアクションを使用することです: profiler.Step("Name goes here", () => this.DoSomethingUseful(i - 1)); ASP.NET MVCもusingフォームに選択されています。 <% using (Html.BeginForm()) { %> <label for="firstName">Name:</label> <%= Html.TextBox("name")%> …

4
C#の定数
コンパイラが定数値をアセンブリメタデータに格納するのはなぜですか?それらは、アセンブリメタデータから中間言語コードに直接埋め込まれていますか?
9 c#  clr  compilation 

8
過去のIfステートメント配列、ループ…さて、何ですか
私がこの壁にぶつかったとき、私は1年以上前にプログラミングをあきらめました。基本的なAndroidアプリケーションを作成したいので、このトピックを再考します。しかし、私の限られた知識では不十分だと思います。 これが私の問題です。 私はいくつかの本を読んだり、C#/ Javaでビデオチュートリアルを見たり、例に従って、本を完成させたりしました。結局、彼らはいつも次に何をすべきかについて私を困惑させているようです。 つまり、基本的な "hello world"アプリケーションからifや配列までを教えてくれるので、コーディングの世界に出て、何かを作成する方法を知っているように思われます。 ここで何か不足していますか?これらはすべてのプログラムの構成要素であることは知っていますが、私が読んだ本は次に何をすべきかを実際に示すことはありません。 私が仮定する簡単な答えは「コーディングを開始する」ことですが、どこに?たとえば、「He​​ad First Java」を読みました。その部分まで、彼らはあなたがあなたが学んだすべてを取り、犬のレースゲームを作成することをあなたに言っていました... 「チートしないで、提供されたソースコードを見てみてください。これでこれを実行できるようになるはずです」_正確な引用ではありませんが、基本的にはそうです...... 30分前は、配列を作成する方法を説明しているだけでしたが、理論なしに、実際に動作するゲームを作成するつもりですか? 私がこれを尋ねる理由は、これが少なくともコーディングを開始するために知っているはずのすべてであると恐れているからです。 アドバイスありがとうございます

5
「プログラミングエラー」の例外-アプローチは適切ですか?
私は現在、例外の使用方法を改善しようとしていますが、プログラミングエラーを示す例外(たとえば、誰かが引数としてnullを渡した、またはオブジェクトが破棄された後にメソッドを呼び出した)と、呼び出し側の障害ではない操作(I / O例外など)。 これらの2種類の例外はどのように異なる方法で処理する必要がありますか?エラー例外を明示的に文書化する必要があると思いますか、または関連する前提条件を文書化するだけで十分ですか?また、明らかな場合(たとえば、ObjectDisposedException破棄されたオブジェクトでメソッドを呼び出す場合)、前提条件またはエラー例外のドキュメントを省略できますか?
9 java  c#  c++  exceptions 

5
ネストされたクラスは過小評価されていますか?
私は他の誰もが知らないことを知っていると言っているわけではありませんが、ネストされたクラスを使用してますます多くのデザインを解決してきました。設計メカニズム。 これは私に質問を導きます:彼らが私を噛むように戻ってきたときに私が発見する理由のために、私は本質的に悪い道を進んでいますか、またはネストされたクラスはおそらく過小評価されているものですか? 次に、私がそれらを使用した2つの例を示します。https://gist.github.com/3975581-1つ目は、密接に関連する階層的なものを一緒に保つのに役立ち、2つ目は、保護されたメンバーへのアクセス権をワーカーに与えました...
9 c#  design 

1
(共通の)フレームワーク名と競合するクラス名で何をすべきか
コンポーネントの最も明白なクラス名がフレームワークによって使用される場合、正確に何をする必要がありますか?私の場合、HTTPリクエストを記述するクラスを作成する必要があります。もちろん、最も一般的な名前はSystem.Web.HttpRequestとして「取得」されます。私は何をすべきか?このプロジェクトはWebコンテキストで使用されるので、System.Web名前空間をインポートしないように強制したり、手動ですべてのクラス名を入力したりしないでください。 これに対処する通常の方法は何ですか?私はこれを思いつくことができます: プロジェクトの短縮名をクラス名の前に付ける 同じことを意味する別の名前を付けてみてください(私は試しましたが、何も思いつきません) ユーザーに名前空間の選択を強制する
9 c#  .net  naming  namespace 

4
.NETアプリケーションで参照を処理する最良の方法は何ですか
最近、私たちはプロジェクトにタグを付けたり分岐させたりする問題に遭遇し、古いフォルダー構造を指しているDLL /プロジェクト参照のためにコンパイルの問題がいくつかありました。 プロジェクトごとに「外部bin」フォルダーを作成し、参照されたdllをこれらのフォルダーにコピーしました。これは最善の方法ですか、これを処理するための特定の業界標準はありますか?
9 c# 

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