Questions tagged «c#»

C#(发音为“ See Sharp”)是由Microsoft开发的一种高级,静态类型的多范例编程语言。C#代码通常针对Microsoft的.NET系列工具和运行时,其中包括.NET Framework,.NET Core和Xamarin。使用此标记可解决有关用C#或C#正式规范编写的代码的问题。

1
ASP.NET MVC Core 3.0 API将枚举序列化为字符串
如何在ASP.NET MVC Core 3.0中将Enum字段序列化为String而不是Int?我不能用旧的方式做。 services.AddMvc().AddJsonOptions(opts => { opts.JsonSerializerOptions.Converters.Add(new StringEnumConverter()); }) 我收到一个错误: 无法从“ Newtonsoft.Json.Converters.StringEnumConverter”转换为“ System.Text.Json.Serialization.JsonConverter”

1
C#开关表达式返回不同的结果
我已经在我的一个项目上切换到C#8。而且我一直在将所有switch语句移到表达式上。但是,我发现我的项目开始工作的方式有所不同,而且我发现这是因为这种switch表达。让我们获取此代码为例 class Program { public enum DataType { Single, Double, UInt16, UInt32, UInt64, Int16, Int32, Int64, Byte } static void Main(string[] args) { dynamic value1 = 5; dynamic value2 = 6; var casted = CastToType(value1, DataType.Int16); var casted1 = CastToTypeExpression(value2, DataType.Int16); var type = casted.GetType(); // Int16 var type1 = …
13 c# 

2
如何在.NET Core 3.0实体框架中执行组联接?
随着对.NET Core 3.0的更改,我得到了 ... NavigationExpandingExpressionVisitor'失败。这可能表示EF Core中存在错误或限制。有关更多详细信息,请参阅 https://go.microsoft.com/fwlink/?linkid=2101433。)---> System.InvalidOperationException:处理LINQ表达式'GroupJoin,... 这是一个非常简单的查询,因此必须有一种在.NET CORE 3.0中执行该查询的方法: var queryResults1 = await patients .GroupJoin( _context.Studies, p => p.Id, s => s.Patient.Id, (p, studies) => new { p.DateOfBirth, p.Id, p.Name, p.Sex, Studies =studies.Select(s1=>s1) } ) .AsNoTracking().ToListAsync(); 我基本上是在寻找一个Linq查询(或上面的方法语法),它将查询与研究合并到患者中,并将研究设置为空列表,如果给定患者没有研究,则将其设置为null。 有任何想法吗?这在.NET Core 2.2中正常工作。此外,上面的MSFT链接还提到,密钥突破更改与客户端评估有关,并且避免了生成的查询读取整个表,然后必须对这些表进行联接或过滤。但是,通过此简单查询,可以在服务器端轻松进行联接。

3
实体框架核心中的强类型ID
我正在尝试创建一个强类型的Id类,该类现在在内部保持“ long”。实施如下。我在实体中使用此控件时遇到的问题是,实体框架向我发送一条消息,指出属性ID已映射到其上。请参阅IEntityTypeConfiguration下面的内容。 注意:我的目标不是严格的DDD实现。因此,在评论或回答时请记住这一点。键入后的整个id Id是供开发人员进入的项目,他们被强烈键入要在其所有实体中使用Id,当然可以转换为long(或BIGINT)-但对于其他人则很清楚。 在类和配置下面,这不起作用。可以在https://github.com/KodeFoxx/Kf.CleanArchitectureTemplate.NetCore31中找到该存储库, Id上的课程(现在已注释掉):https : //github.com/KodeFoxx/Kf.CleanArchitectureTemplate.NetCore31/blob/master/Source/Common/Kf.CANetCore31/DomainDrivenDesign/Id.cs Entity和ValueObject类(Entity属性Id的类型为Id.cs(在上面):https : //github.com/KodeFoxx/Kf.CleanArchitectureTemplate.NetCore31/tree/master/Source/Common/Kf.CANetCore31/DomainDrivenDesign 可在以下位置进行配置:https : //github.com/KodeFoxx/Kf.CleanArchitectureTemplate.NetCore31/tree/master/Source/Infrastructure/Persistence/Kf.CANetCore31.Infrastructure.Persistence.Ef/EntityTypeConfigurations Id类实现(现在标记为过时,因为在找到解决方案之前我放弃了这个想法) namespace Kf.CANetCore31.DomainDrivenDesign { [DebuggerDisplay("{DebuggerDisplayString,nq}")] [Obsolete] public sealed class Id : ValueObject { public static implicit operator Id(long value) => new Id(value); public static implicit operator long(Id value) => value.Value; public static implicit operator Id(ulong value) …

2
如何使用C#重命名.rar .7z,.tar,.zip中的文件和文件夹
我有一个压缩文件.rar .7z,.tar和.zip,我想重命名使用C#压缩的上述压缩文件中可用的物理文件名。 我使用Sharpcompress库进行了尝试,但是在.rar .7z,.tar和.zip文件中找不到用于重命名文件或文件夹名称的功能。 我也尝试过使用DotNetZip库,但是它唯一的支持。Zip请参阅我尝试过使用DotNetZip库的内容。 private static void RenameZipEntries(string file) { try { int renameCount = 0; using (ZipFile zip2 = ZipFile.Read(file)) { foreach (ZipEntry e in zip2.ToList()) { if (!e.IsDirectory) { if (e.FileName.EndsWith(".txt")) { var newname = e.FileName.Split('.')[0] + "_new." + e.FileName.Split('.')[1]; e.FileName = newname; e.Comment = "renamed"; zip2.Save(); …
12 c#  zip  tar  7zip  rar 

1
什么是C#8中的未知可空性?
在C#8.0中,我们可以有可为空的引用类型。文档指出存在4种可为空性。前三个非常清楚,但我无法理解“未知”的含义。文档说它与泛型一起使用,但是当我尝试对泛型中T类型的无约束变量调用方法时,它只会发出警告,就好像该类型可以为空。我看不到unknown和nullable之间的区别。为什么未知存在?它如何表现出来?

4
在“长路径感知”环境中对PathRelativePathTo的参数的限制
对于Windows 10上的长路径感知过程,我试图了解使用Windows Shell方法PathRelativePathTo时的参数限制。 在下面的示例中,我通过pinvoke使用C#来调用该方法。 我在下面给出了多个示例及其输出。注意: 所有这些示例都为“ from”提供目录路径,为“ to”提供文件路径(这些路径实际上都不存在于磁盘上) 我的观察是 “短” MAX_PATH长度(260)以下的路径返回成功,并具有预期结果。 一些路径在 “短” MAX_PATH回报的成功与正确的结果。 一些路径在 “短” MAX_PATH回报的成功与错误的答案(哎呀!) 一些更长的路径返回错误。但是,它不是某个固定的最大长度。 资源: class Program { static class Native { // https://www.pinvoke.net/default.aspx/shlwapi.pathrelativepathto // https://docs.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-pathrelativepathtoa [DllImport("shlwapi.dll", SetLastError = true, CharSet = CharSet.Auto)] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool PathRelativePathTo([Out] StringBuilder pszPath, [In] string pszFrom, [In] …
12 c#  .net  windows  c#-4.0  c#-3.0 

5
如何全局设置System.Text.Json.JsonSerializer的默认选项?
更新[2019-12-23]: 部分由于声音社区的投入,此问题已添加到 .NET 5.0 的路线图中。 更新[2019-10-10]: 如果有兴趣看到针对System.Text.Json.JsonSerializer继续阅读Chris Yungmann指出的GitHub公开问题,并发表意见。 代替这个: JsonSerializerOptions options = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase // etc. }; JsonSerializer.Deserialize<SomeObject>(someJsonString, options); 我想做这样的事情: // This property is a pleasant fiction JsonSerializer.DefaultSettings = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase // etc. }; // This uses my options JsonSerializer.Deserialize<SomeObject>(someJsonString); // And …

3
在.net core 3中将newtonsoft代码转换为System.Text.Json。JObject.Parse和JsonProperty等效什么
我正在将newtonsoft实现转换为.net core 3.0中的新JSON库。我有以下代码 public static bool IsValidJson(string json) { try { JObject.Parse(json); return true; } catch (Exception ex) { Logger.ErrorFormat("Invalid Json Received {0}", json); Logger.Fatal(ex.Message); return false; } } 我找不到任何等效的 JObject.Parse(json); 以及JsonProperty等效的属性是什么 public class ResponseJson { [JsonProperty(PropertyName = "status")] public bool Status { get; set; } [JsonProperty(PropertyName = "message")] public …


2
如何在WPF应用程序的.NET Core 3.0中引用System.Windows.Forms?
我正在将WPF桌面应用程序从.NET Framwork迁移到Core 3.0。我正在使用System.Windows.Forms.FolderBrowserDialog(),现在陷入了如何将此引用添加到Core项目的问题。没有可用的“ System.Windows.Forms” NuGet包,在那里吗?有没有其他方法可以在Core中显示FolderBrowserDialog? 更新资料 我使用默认模板创建了Core项目,然后将粘贴的.cs和.xaml文件复制到其中。.csproj文件如下所示: <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <UseWPF>true</UseWPF> </PropertyGroup>

2
转换日期时间?串
我想将a转换DateTime?为字符串。如果日期为null,则返回"",否则返回类似以下的字符串格式:"2020-03-05T07:52:59.665Z"。该代码是这样的,但是它不起作用。它"DateTime?"说不包含“ ToUniversalTime”的定义。有人知道该如何解决? DateTime? date = DateTime.UtcNow; var dateInUTCString = date == null ? "" : date.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'");
11 c# 

1
按键对ImmutableSortedDictionary范围进行枚举
我正在阅读有关C#的内容ImmutableSortedDictionary,System.Collections.Immutable并在考虑如何在程序中应用它。我非常喜欢C ++的lower_bound和upper_bound(请参阅此处),而我更希望看到某种范围查找。但是,文档中似乎缺少类似的方法。我想念什么吗?还是MS真正提供了分类字典,而没有有效访问分类范围?这似乎并不像可以对IEnumerable扩展方法那样对某个键进行某些操作,所以我有点困惑,因为我没有看到集合直接提供的某些功能。

4
使用System.Text.Json异步反序列化列表
可以说,我请求一个包含许多对象列表的大json文件。我不希望它们一次全部出现在内存中,但我宁愿一个个地读取和处理它们。所以我需要将异步System.IO.Stream流转换为IAsyncEnumerable<T>。如何使用新的System.Text.JsonAPI来做到这一点? private async IAsyncEnumerable<T> GetList<T>(Uri url, CancellationToken cancellationToken = default) { using (var httpResponse = await httpClient.GetAsync(url, cancellationToken)) { using (var stream = await httpResponse.Content.ReadAsStreamAsync()) { // Probably do something with JsonSerializer.DeserializeAsync here without serializing the entire thing in one go } } }

2
如何获取.NET Core 3单文件应用程序以查找appsettings.json文件?
如何配置单文件.Net Core 3.0 Web API应用程序以查找appsettings.json与创建单文件应用程序相同的目录中的文件? 跑步后 dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true 该目录如下所示: XX/XX/XXXX XX:XX PM <DIR> . XX/XX/XXXX XX:XX PM <DIR> .. XX/XX/XXXX XX:XX PM 134 appsettings.json XX/XX/XXXX XX:XX PM 92,899,983 APPNAME.exe XX/XX/XXXX XX:XX PM 541 web.config 3 File(s) 92,900,658 bytes 但是,尝试运行会APPNAME.exe导致以下错误 An exception occurred, System.IO.FileNotFoundException: The configuration …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.