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

C#(「seesharp」と発音)は、Microsoftによって開発された、静的に型指定された高レベルのマルチパラダイムプログラミング言語です。C#コードは通常、Microsoftの.NETファミリのツールとランタイムを対象としています。これには、.NET Framework、.NET Core、Xamarinなどが含まれます。このタグは、C#またはC#の正式な仕様で記述されたコードに関する質問に使用します。

2
C#で非同期動作を委任するためのパターン
非同期処理の問題を追加する機能を公開するクラスを設計しようとしています。同期プログラミングでは、これは次のようになります。 public class ProcessingArgs : EventArgs { public int Result { get; set; } } public class Processor { public event EventHandler<ProcessingArgs> Processing { get; } public int Process() { var args = new ProcessingArgs(); Processing?.Invoke(args); return args.Result; } } var processor = new Processor(); processor.Processing += args => args.Result …

2
null参照が可能ではないように思われるときに、なぜ参照解除null参照の警告が表示されるのですか?
HNQでこの質問を読んだ後、C#8のNullable参照型について読み、いくつかの実験を行いました。 誰かが「コンパイラのバグを見つけた!」と言ったとき、私は10回のうち9回、またはもっと頻繁にそれを知っています。これは実際には仕様によるものであり、彼ら自身の誤解です。そして、私がこの機能を調べ始めたのは今日だけなので、明らかに私はそれをあまりよく理解していません。これが邪魔にならないように、このコードを見てみましょう: #nullable enable class Program { static void Main() { var s = ""; var b = s == null; // If you comment this line out, the warning on the line below disappears var i = s.Length; // warning CS8602: Dereference of a possibly null reference } } …

2
サービスを構成するときに依存関係注入を使用してAzure Function V3でIConfigurationを注入または使用する方法
通常、.NET Coreプロジェクトでは、DI登録コマンドとともにサービスを構成するための「ブーストラップ」クラスを作成します。これは通常、メソッドをIServiceCollection呼び出すことができる拡張メソッドであり、.AddCosmosDbService必要なものはすべて、そのメソッドを含む静的クラスで「自己完結型」です。重要なのは、メソッドがクラスIConfigurationからを取得することStartupです。 私は過去にAzure FunctionsでDIを使用したことがありますが、この特定の要件にはまだ遭遇していません。 関数をAzureにデプロイするときに、IConfiguration私local.settings.jsonと開発/プロダクションアプリケーションの両方の設定に一致するプロパティを持つ具体的なクラスにバインドするためにを使用しています。 CosmosDbClientSettings.cs /// <summary> /// Holds configuration settings from local.settings.json or application configuration /// </summary> public class CosmosDbClientSettings { public string CosmosDbDatabaseName { get; set; } public string CosmosDbCollectionName { get; set; } public string CosmosDbAccount { get; set; } public string CosmosDbKey { get; set; …

4
子クラスに実装するときに、抽象メソッドの前にオーバーライドキーワードを指定する必要があるのはなぜですか?
抽象クラスから継承するクラスを作成し、継承した抽象クラスを実装するときに、overrideキーワードを使用する必要があるのはなぜですか。 public abstract class Person { public Person() { } protected virtual void Greet() { // code } protected abstract void SayHello(); } public class Employee : Person { protected override void SayHello() // Why is override keyword necessary here? { throw new NotImplementedException(); } protected override void Greet() { …
9 c# 

3
同じエンティティを異なるテーブルにマッピングする
ドメインに関する知識 商品の支払いや払い戻しを可能にするPOS(Point Of Sales)ソフトウェアを書いています。支払いまたは払い戻しの際、使用する送金方法を指定する必要があります:現金、銀行口座振込(〜=クレジットカード)、ポイントカード、バウチャーなど。 これらの送金手段は、有限で既知の値のセット(列挙型の一種)です。 トリッキーな部分は、支払いと払い戻しの両方(2つのセットは異なる場合があります)のためにこれらの手段のカスタムサブセットをPOS端末に保存できる必要があることです。 例えば: 利用可能な支払い手段:現金、EFT、ポイントカード、バウチャー 利用可能な払い戻し手段:現金、バウチャー 実施の現状 私は次のように送金手段の概念を実装することを選択します: public abstract class MoneyTransferMean : AggregateRoot { public static readonly MoneyTransferMean Cash = new CashMoneyTransferMean(); public static readonly MoneyTransferMean EFT = new EFTMoneyTransferMean(); // and so on... //abstract method public class CashMoneyTransferMean : MoneyTransferMean { //impl of abstract method …


2
動的接続文字列データベースC#
私は常にこのコード行を接続に使用します: string ConnectString = "datasource = mysource; username = myusername; password = mypassword; database = mydatabasename"; 今回私がしようとしていることは、スクリプトのサーバーデータを直接テキストボックスに入力するたびに書き込むのではなく、だから私はこのようなことをやろうとする string ConnectString = "datasource = txtmysource.Text; username = txtmyusername.Text; password = txtmypassword.Text; database = txtmydatabasename.Text"; ここで、txtmysource.Text / txtmyusername.Text / txtmypassword.Text / txtmydatabasename.Textは、UI内のテキストボックスの名前です。しかし、それを行うための書き込み方法が見つかりません。
9 c#  database 

3
ORMでDTOクラスを使用する場合のC#8のnull可能な参照型
以下に示すように、データ転送オブジェクト(DTO)クラスを持つプロジェクトでこの機能をアクティブにしました。 public class Connection { public string ServiceUrl { get; set; } public string? UserName { get; set; } public string? Password { get; set; } //... others } しかし、私はエラーを受け取ります: CS8618:null可能ではないプロパティ 'ServiceUrl'は初期化されていません。プロパティをnull許容として宣言することを検討してください。 これはDTOクラスなので、プロパティを初期化していません。これは、プロパティがnullでないことを保証するためにクラスを初期化するコードの責任です。 たとえば、呼び出し元は次のことができます。 var connection = new Connection { ServiceUrl=some_value, //... } 私の質問:C#8のnull可能性コンテキストが有効になっているときに、DTOクラスでこのようなエラーを処理する方法は?

1
IAsyncEnumerableがASP.NET Web APIでどのように機能するかについての説明
ASP.NET Web APIプロジェクトでIAsyncEnumerableを探索しているときに、興味深い動作が発生しました。次のコードサンプルを検討してください。 // Code Sample 1 [HttpGet] public async IAsyncEnumerable<int> GetAsync() { for (int i = 0; i < 10; i++) { await Task.Delay(1000); yield return i; } } // Code Sample 2 [HttpGet] public async IAsyncEnumerable<string> GetAsync() { for (int i = 0; i < 10; i++) { …

3
別のタスクを待つ開始されていないタスクを宣言する方法は?
私はこの単体テストを実行しましたが、「await Task.Delay()」が待機しない理由がわかりません! [TestMethod] public async Task SimpleTest() { bool isOK = false; Task myTask = new Task(async () => { Console.WriteLine("Task.BeforeDelay"); await Task.Delay(1000); Console.WriteLine("Task.AfterDelay"); isOK = true; Console.WriteLine("Task.Ended"); }); Console.WriteLine("Main.BeforeStart"); myTask.Start(); Console.WriteLine("Main.AfterStart"); await myTask; Console.WriteLine("Main.AfterAwait"); Assert.IsTrue(isOK, "OK"); } ユニットテストの出力は次のとおりです。 これはどのようにして「待機」が待機せず、メインスレッドが継続するのでしょうか。

2
C#は `notnull`型をnull可能にできません
私はラストResultやハスケルに似たタイプを作成しようとしていますが、Eitherこれはここまでです: public struct Result<TResult, TError> where TResult : notnull where TError : notnull { private readonly OneOf<TResult, TError> Value; public Result(TResult result) => Value = result; public Result(TError error) => Value = error; public static implicit operator Result<TResult, TError>(TResult result) => new Result<TResult, TError>(result); public static implicit operator Result<TResult, TError>(TError …

1
この場合にconstを使用するオーバーヘッドを説明できるものは何ですか?
私はここの壁に頭をぶつけているので、あなたの何人かが私を教育することができるかもしれないことを願っています。私はBenchmarkDotNetを使用していくつかのパフォーマンスベンチマークを行っていましたが、メンバーを宣言するとconstパフォーマンスが大幅に低下すると思われるこの奇妙なケースに遭遇しました。 using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Running; using System; namespace PerfTest { [DisassemblyDiagnoser(printAsm: true, printSource: true)] public class Test { private int[] data; private int Threshold = 90; private const int ConstThreshold = 90; [GlobalSetup] public void GlobalSetup() { data = new int[1000]; var random = new Random(42); for (var i = …

3
コントローラに入った後のモデルの動的バインディングの遅延バインディング
コントローラでアクションを開始した後にモデルを解決する方法を探しています。問題を説明する最も簡単な方法は次のとおりです。 public DTO[] Get(string filterName) { //How can I do this this.Resolve<MyCustomType>("MyParamName"); } あなたがなぜ私がそうしようとしているのかについての詳細を探しているなら、あなたは全体像を取得するために読み続けることができます TL; DR クエリ文字列から常に解決されるパラメーター名を指定して、モデルをリクエストを解決する方法を探しています。スタートアップからフィルターを動的に登録するにはどうすればよいですか。フィルターの登録を処理するクラスがあります。 私のスタートアップクラスでは、restServicesにフィルターを動的に登録できるようにしたいと考えています。大体次のようなカスタムControllerFeatureProviderに渡すために使用するオプションがあります。 public class DynamicControllerOptions<TEntity, TDTO> { Dictionary<string, Func<HttpContext, Expression<Func<TEntity, bool>>>> _funcNameToEndpointResolverMap = new Dictionary<string, Func<HttpContext, Expression<Func<TEntity, bool>>>>(); Dictionary<string, List<ParameterOptions>> _filterParamsMap = new Dictionary<string, List<ParameterOptions>>(); public void AddFilter(string filterName, Expression<Func<TEntity, bool>> filter) { this._funcNameToEndpointResolverMap.Add(filterName, …

1
C#クラスから.protoファイルを生成したり、「Code First gRPC」を使用するにはどうすればよいですか?
asp.netコアWebアプリケーションで.NETコア3とgRPCを使用したい。既存のC#クラスとモデルオブジェクトから必要な.protoファイルを生成するにはどうすればよいですか?既存のコードを反映する.protoファイルを書き直したくありません。.protoファイルをクラスおよびモデルオブジェクトから自動生成したいのですが。 このメソッドを呼び出して、サービスクラスを登録します。 builder.MapGrpcService<MyGrpcService>(); public class MyGrpcService { public Task<string> ServiceMethod(ModelObject model, ServerCallContext context) { return Task.FromResult("It Worked"); } } ModelObject[DataContract]あり[DataMember]、注文属性があります。 これは可能ですか?私がオンラインで見る例はすべて.protoファイルから始まります。MyGrpcServiceクラスで必要なサービスメソッドを既に定義しました。しかし、多分これは物事を行う標準的な方法とはちょうど逆です... 古い.NETリモート処理のようなものは、リモートエンドポイントからインターフェイスを要求するだけで理想的であり、それは魔法のように双方向のgRPC通信に使用されますが、ビューが単純すぎる可能性があります。

2
構造型のoutパラメータを割り当てる必要はありません
コードレビュー中に関数の行を誤ってコメントアウトすると、コードに奇妙な動作が見られます。再現は非常に困難でしたが、ここでは同様の例を示します。 私はこのテストクラスを持っています: public class Test { public void GetOut(out EmailAddress email) { try { Foo(email); } catch { } } public void Foo(EmailAddress email) { } } GetOut通常はエラーをスローする電子メールへの割り当てはありません。 コントロールが現在のメソッドを離れる前に、出力パラメーター 'email'を割り当てる必要があります ただし、EmailAddressが別のアセンブリの構造体にある場合、エラーは発生せず、すべてが正常にコンパイルされます。 public struct EmailAddress { #region Constructors public EmailAddress(string email) : this(email, string.Empty) { } public EmailAddress(string email, string name) …
9 c#  .net 

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