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

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

4
サポートされていない.Net Core 3.0の可能なオブジェクトサイクルが検出されました
1対多に関連する2つのエンティティがあります public class Restaurant { public int RestaurantId {get;set;} public string Name {get;set;} public List<Reservation> Reservations {get;set;} ... } public class Reservation{ public int ReservationId {get;set;} public int RestaurantId {get;set;} public Restaurant Restaurant {get;set;} } APIを使用して予約付きのレストランを取得しようとした場合 var restaurants = await _dbContext.Restaurants .AsNoTracking() .AsQueryable() .Include(m => m.Reservations).ToListAsync(); ..... オブジェクトには相互参照が含まれているため、応答としてエラーが表示されます。別のモデルを作成する か、NewtonsoftJson構成を追加することを推奨する関連する投稿があります 問題は、別のモデルを作成したくなく、2番目の提案が役に立たなかったことです。循環関係なしにデータをロードする方法はありますか?* …

5
C#で一般的な例外のすべてのバリアントをキャッチする方法
一般的な例外クラスのすべてのバリアントをキャッチしたいと思います。複数のcatchブロックなしでそれを行う方法があるかどうか疑問に思っていました。たとえば、例外クラスがあるとします。 public class MyException<T> : Exception { public string MyProperty { get; } public MyException(T prop) : base(prop.ToString()) { MyProperty = prop?.ToString(); } } および2つの派生クラス: public class MyDerivedStringException : MyException<string> { public MyDerivedStringException(string prop) : base(prop) { } } public class MyDerivedIntException : MyException<int> { public MyDerivedIntException(int prop) : base(prop) …
22 c#  generics  exception 

1
.Net Core 3ワーカーサービスでアプリ設定をセットアップする方法
.Net Core 3でappsettings.jsonを読むことに関するチュートリアルとSOの質問(App Settings .Net Coreなど)をいくつか見てきましたが、Workerサービスを処理するときのハウツーに関するポインターが見つかりません。スタートアップメソッドはありません。代わりに、mainメソッドを含むProgram.csがあります。 public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddHostedService<Worker>(); }); } .Net Core 3のワーカーサービスプロジェクトのappsettings.jsonファイルから読み取るにはどうすればよいですか? .Net v4.8で作成したカスタムWCFクライアントへの参照と、すべてのビジネスドメインオブジェクトのみをソリューション全体で共有する別のプロジェクトへの参照を追加しました。私のソリューションは主に.Net v4.8であり、ワーカーサービスを使用したいと考えています。クライアントプロジェクトは、コードによって内部的にWCFクライアントを作成するため、すべてのバインディングとエンドポイントを構成できます。これが.Net v4.8プロジェクトである場合、以下をapp.configに追加します。 <appSettings> ... <add key="AminServiceUri" value="http://localhost:45108/ServiceHost/v1/AminService.svc" /> <add key="BillServiceUri" value="http://localhost:45108/ServiceHost/v1/BillService.svc" /> <add …

5
無制限のパラメーターを持つc#メソッドまたは配列またはリストを持つメソッド?
私は最近、無制限のパラメーターを使用していくつかのメソッドを作成できることを学びました。次に例を示します。 SomeMethod(params int[] numbers); しかし、私の質問は、それとリストまたは配列を受け取るメソッドを作成することの違いは何ですか? SomeMethod(int[] numbers); SomeMethod(List<int> numbers); おそらくそれはパフォーマンスに何らかの影響を与えますか?無制限のパラメーターを使用する方法をどのように選択すればよいのか、完全に理解または確認していません。 グーグルでのクイック検索は役に立たなかった、あなたが私を助けてくれるといいのですが。
21 c#  methods 

1
使用と使用待機の違いは何ですか?そして、どの方法を使用するかをどのように決定できますか?
場合によっては、Visual Studioでこれを行うことをお勧めします await using var disposable = new Disposable(); // Do something これの代わりに using var disposable = new Disposable(); // Do something 違いは何であるusingとはawait using? どれを使用するかをどのように決定すればよいですか?
21 c#  c#-8.0 

3
DTOにnull許容参照型を使用するためのベストプラクティス
DynamoDBテーブルから読み取ることで入力されるDTOがあります。現在、次のようになっているとします。 public class Item { public string Id { get; set; } // PK so technically cannot be null public string Name { get; set; } // validation to prevent nulls but this doesn't stop database hacks public string Description { get; set; } // can be null } これに対処するためのベストプラクティスはありますか?Dynamo …

4
AsyncDisposeで例外を処理する適切な方法
新しい.NET Core 3に切り替えるIAsynsDisposableときに、次の問題に遭遇しました。 問題の中核:DisposeAsync例外がスローされた場合、この例外はawait using-block 内でスローされたすべての例外を非表示にします。 class Program { static async Task Main() { try { await using (var d = new D()) { throw new ArgumentException("I'm inside using"); } } catch (Exception e) { Console.WriteLine(e.Message); // prints I'm inside dispose } } } class D : IAsyncDisposable { public …

3
「ILoggerFactory」には「AddConsole」の定義が含まれていません
private ILoggerFactory ConfigureLogging(ILoggerFactory factory) { factory.AddConsole(); return factory; } 上記のコードをGithubで見つけました。次のエラーが発生します。 'ILoggerFactory' does not contain a definition for 'AddConsole' and the best extension method overload 'ConsoleLoggerExtensions.AddConsole(ILoggingBuilder)' requires a receiver of type 'ILoggingBuilder' NET Core 3.0を使用していて、次のNuGetパッケージをインストールしています。 <PackageReference Include="Discord.Net" Version="2.1.1" /> <PackageReference Include="Discord.Net.Commands" Version="2.1.1" /> <PackageReference Include="Discord.Net.WebSocket" Version="2.1.1" /> <PackageReference Include="Microsoft.Extensions.Configuration" Version="3.0.0" /> …
20 c#  nuget  core  discord.net 

2
.NET Core 3.0でAddJwtBearer拡張機能を置き換える方法
.NET Core 2.2でコンパイルして動作する次のコードがあります。 byte[] key = Encoding.ASCII.GetBytes(Constants.JWT_SECRET); services.AddAuthentication(x => { x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(x => { x.RequireHttpsMetadata = false; x.SaveToken = true; x.TokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(key), ValidateIssuer = false, ValidateAudience = false }; }); .NET Core 3.0では、次のエラーが発生します。 エラーCS1061「AuthenticationBuilder」には「AddJwtBearer」の定義が含まれておらず、タイプ「AuthenticationBuilder」の最初の引数を受け入れるアクセス可能な拡張メソッド「AddJwtBearer」が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?) …

5
ASP.NET Core 3.0 System.Text.Json Camel Case Serialization
ASP.NET Core 3.0 Web APIプロジェクトでは、System.Text.Jsonシリアル化オプションをどのように指定して、Pascalケースのプロパティをキャメルケースに、またはその逆に自動的にシリアル化/非シリアル化しますか? 次のようなPascal Caseプロパティを持つモデルがあるとします。 public class Person { public string Firstname { get; set; } public string Lastname { get; set; } } そして、System.Text.Jsonを使用してJSON文字列をPersonクラスのタイプに逆シリアル化するコード: var json = "{\"firstname\":\"John\",\"lastname\":\"Smith\"}"; var person = JsonSerializer.Deserialize<Person>(json); JsonPropertyNameが次のような各プロパティで使用されない限り、正常に逆シリアル化されません。 public class Person { [JsonPropertyName("firstname") public string Firstname { get; set; } [JsonPropertyName("lastname") public …

2
C#コンパイラはネストされたスコープで重複した変数を許可するのはなぜですか?
歴史的に、.Netで開発するとき、ネストされたスコープで変数の名前を複製できませんでした。ただし、最近Visual Studio 2019をバージョン16.4.2に更新した後、変数名がネストされたスコープで重複する可能性があることに気付きました。 例えば: var test = "hello"; Console.WriteLine(test); var things = new []{"one", "two", "three"}; things.Select(test => // <- test is duplicated here, normally this breaks compilation { Console.WriteLine(test); return test; }).ToList(); // output: // hello // one // two // three https://dotnetfiddle.net/h85BK4 なぜこれが突然許可されるのですか? 追加質問:これが新しい言語の「機能」である場合、ネストされたスコープで変数が複製されたときにVisual Studioが引き続きブレークするように構成する方法はありますか?

1
IAsyncEnumerableをリストに変換
したがって、C#8ではIAsyncEnumerableインターフェイスが追加されました。 普通のものがあれば、それから欲しい他のコレクションをIEnumerable作ることができListます。そこでLinqに感謝します。 var range = Enumerable.Range(0, 100); var list = range.ToList(); さて、私は自分IAsyncEnumerableをaに、Listそしてもちろんこれを非同期に変換したいと思います。その場合のLinq実装はすでにありますか?ない場合、どうすれば自分で変換できますか?


2
JavaScriptからC#への数値の桁落ち
MessageRでSignalRを使用してJavaScriptとC#の間で値をシリアル化および逆シリアル化すると、C#で受信側の精度が少し低下します。 例として、値0.005をJavaScriptからC#に送信しています。逆シリアル化された値がC#側に表示されると、値が得られます0.004999999888241291。これは近いですが、正確には0.005ではありません。JavaScript側の値は、Number私が使用しているC#側ですdouble。 JavaScriptは浮動小数点数を正確に表すことができず、のような結果につながる可能性があることを読みました0.1 + 0.2 == 0.30000000000000004。私が見ている問題は、JavaScriptのこの機能に関連していると思います。 興味深いのは、同じ問題が別の方向に進んでいるとは思えないことです。C#からJavaScriptに0.005を送信すると、JavaScriptの値は0.005になります。 編集:C#からの値は、JSデバッガーウィンドウで短縮されています。@Peteが述べたように、それは正確に0.5ではない何か(0.005000000000000000104083408558)に拡張されます。これは、矛盾が少なくとも両側で発生することを意味します。 JSONシリアライゼーションには同じ問題はありません。これは、値をネイティブの数値型に解析する際に受信環境を制御する文字列を経由すると想定しているためです。 バイナリシリアル化を使用して、両側で値を一致させる方法があるかどうか疑問に思っています。 そうでない場合、これはJavaScriptとC#の間で100%正確なバイナリ変換を行う方法がないことを意味しますか? 使用されるテクノロジー: JavaScript SignalRおよびmsgpack5を使用した.Netコア 私のコードはこの投稿に基づいています。唯一の違いは、私が使用していることですContractlessStandardResolver.Instance。

2
Entity Framework CoreモデルでC#8.0 Nullable参照型を使用する方法
.NET Core 3.0プロジェクトでC#8.0 Nullable参照型を有効にしています。プロジェクトはEntity Framework Core 3.0を使用してデータベースにアクセスします。 以下は、タイトルがnullであってはならないデータモデルです。 public class Vehicle { public int Id { get; private set; } public string Title { get; private set; } // Entity Framework Core is instructed to bind to the private _drivers field in a configuration builder private readonly List<Driver> _drivers = …

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