小编Pav*_*ski的帖子

.Net Core 3.1 Process.Start("www.website.com") 在 WPF 中不起作用

我在 WPF 应用程序中使用 .Net Core 3.1 框架。我有一个按钮事件,我试图在点击时重定向到 Instagram 网址。但它给了我以下错误。

抛出异常:System.Diagnostics.Process.dll 中的“System.ComponentModel.Win32Exception”。

private void Insta_Click(object sender, RoutedEventArgs e)
{
    try
    {
        string targetURL = "https://www.instagram.com/xyz/";
        Process.Start(targetURL);
    }
    catch
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

c# wpf process .net-core

8
推荐指数
1
解决办法
1399
查看次数

将结果添加到 TestCaseSource

我有一个简单的方法,可以从列表中计算给定的计算结果。我想为这个方法编写一些测试。

我正在使用 NUnit。我正在使用 TestCaseSource 因为我试图提供一个列表作为参数。我从这个问题得到了解决方案。我的测试如下所示:

[TestFixture]
    public class CalcViewModelTests : CalcViewModel
    {
        private static readonly object[] _data =
            {
                new object[] { new List<string> { "3", "+", "3" } },
                new object[] { new List<string> { "5", "+", "10" } }
            };

        [Test, TestCaseSource(nameof(_data))]
        public void Test(List<string> calculation)
        {
            var result = SolveCalculation(calculation);

            Assert.That(result, Is.EqualTo("6"));
        }
    }
Run Code Online (Sandbox Code Playgroud)

我想像测试用例一样测试多个计算。

测试用例具有Result 参数。如何将结果添加到 TestCaseSource 以便我可以测试多个计算?

c# testing nunit unit-testing

7
推荐指数
2
解决办法
2300
查看次数

在 Visual Studio 中运行 Service Fabric 应用程序时出现 MSB3021 无法复制文件,找不到部分路径错误

我有一个包含多个项目的 Service Fabric 解决方案。我可以毫无问题地在本地集群上运行除其中一个之外的所有项目,但由于以下问题,一个特定项目将无法部署:

MSB3021无法复制文件“C:\Path\To\Repo\src\MyProject\MyService\obj\Debug\netcoreapp2.1\win7-x64\PubTmp\Out\Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.dll ”到“C:\Path\To\Repo\src\MyProject\MyService\pkg\Debug\MyServicePkg\Code\Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.dll”。找不到路径“C:\Path\To\Repo\src\MyProject\MyService\pkg\Debug\MyServicePkg\Code\Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.dll”的一部分。

还有另外两个错误报告了Microsoft.Extensions.Configuration.EnvironmentVariables.dll和的相同问题runtimeconfig.json,还有 30 个警告说明了随机 dll 的相同问题。

我已经按照惯例做了好几次了:

  1. 删除了所有bin,objpkg目录
  2. 已停止本地集群
  3. 重新启动 Visual Studio
  4. 重新启动机器
  5. 在单独的目录中签出存储库

Code该错误表明它无法找到dir in的部分路径pkg,但我已验证它确实存在。

奇怪的是,这只影响了几个项目中的一个。我在这里遗漏了任何明显的东西吗?

.net visual-studio .net-core azure-service-fabric asp.net-core

7
推荐指数
2
解决办法
8726
查看次数

使用元组循环列表 C#

我有一个 C# 列表,名为MyList

List<Tuple<string, int, int>> MyList= new List<Tuple<string, int, int>>() 
        {
           Tuple.Create("Cars", 22, 3),
           Tuple.Create("Cars", 28, 5),
           Tuple.Create("Planes", 33, 6)
        };
Run Code Online (Sandbox Code Playgroud)

我想以与上面填充相同的顺序循环遍历整个列表,并能够一一获取每个列表项的值,例如Cars, 22, 3. 我怎么做?我想我必须以ForEach某种方式使用。

.net c# tuples list

7
推荐指数
1
解决办法
1万
查看次数

Kotlin 在 C# 中“应用”等效

使用 Kotlin 时,可以使用apply设置现有对象的多个属性并保持代码更清晰,例如,而不是:

person.firstName = "John"
person.lastName = "Doe"
person.phone = "123 456 789"
Run Code Online (Sandbox Code Playgroud)

我们可以用:

person.apply {
   firstName = "John"
   lastName = "Doe"
   phone = "123 456 789"
}
Run Code Online (Sandbox Code Playgroud)

是否有与applyC# 中的等效项?

最接近的是,using但据我所知,它不能以这种方式使用。

编辑:我知道C# 中的对象初始值设定项,但实际上我正在寻找可以为现有对象(例如从数据库中获取的对象)完成的操作。

c# kotlin

7
推荐指数
2
解决办法
1078
查看次数

可空引用类型和构造函数警告

我正在尝试在我的项目中包含 C# 8 的可为空引用类型,并使其与 EF Core 顺利工作。

按照本指南,我使我的实体类具有接受初始化其不可为空属性所需的所有数据的构造函数:

public class MyEntity
    {
        public MyEntity(int someNumber, string name, string shortName, bool active)
        {
            SomeNumber= someNumber;
            Name = name;
            ShortName = shortName;
            Active = active;
        }

        public int SomeNumber { get; set; }
        public string Name { get; set; }
        public string ShortName { get; set; }
        public string? SomethingOptional { get; set; }
        public bool Active { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

在我的业务案例中,我有时需要更新实体的所有属性。我可以使用属性设置器,但由于我想通过将初始化语法加倍来确保不会遗漏任何内容(实际上我的实体可以有 10 个或更多属性),我决定创建一个公共 Update() 函数以方便使用并调用它而不是构造函数体:

        public MyEntity(int someId, …
Run Code Online (Sandbox Code Playgroud)

c# constructor entity-framework-core c#-8.0 nullable-reference-types

7
推荐指数
2
解决办法
671
查看次数

为什么 Notepad++ [NULL] 字符无法粘贴?

我是这个网站的新手,我不知道我是否提供了足够的信息 - 我会尽力=)

如果您使用 Notepad++,那么您就会知道我在说什么 - 当用户将 a 加载.exe到 Notepad++ 中时,NUL/\x0字符会被替换为NULL,它具有黑色背景和白色文本。我尝试将其粘贴到 Visual Studio 中,希望获得相同的输出,但它只是粘贴了一些空格...

有谁知道这是否是某个组合键或其他什么?我想用该NULL字符替换\x0,就像 Notepad++ =)

这张图片包含我想要的NUL字符:)

c# notepad++ visual-studio

6
推荐指数
1
解决办法
8193
查看次数

如何在 .NET 中制造空字符串?

我写了一段优化的代码,其中包含null和 空字符串的特殊情况。我现在正在尝试为此代码编写单元测试。为了做到这一点,我需要两个不同对象的空(零长度)字符串对象。像这样:

string s1, s2;
Assert.IsTrue(s1.Length == 0 && s2.Length == 0);
Assert.IsTrue(!ReferenceEquals(s1, s2));
Run Code Online (Sandbox Code Playgroud)

事实证明,大多数 .NET Framework API 字符串都在检查空结果。string.Empty在所有这些情况下,他们都会回来。例如,"x".Remove(0, 1)返回string.Empty.

如何创建新的零长度字符串对象?

.net c# string

6
推荐指数
2
解决办法
217
查看次数

是否可以将命名元组与泛型类型声明一起使用?

我知道我们可以声明一个命名元组,如:

var name = (first:"Sponge", last:"Bob");
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何将命名元组与泛型类型(例如 Dictionary )结合起来

我尝试了以下变体,但没有运气:

Dictionary<string, (string, string)> name = new Dictionary<string, (string, string)>();

// this assignment yields this message:
// The tuple element name 'value' is ignored because a different name or no name is specified by the 
// target type '(string, string)'.
// The tuple element name 'limitType' is ignored because a different name or no name is specified 
// by the target type '(string, string)'.
name["cast"] = (value:"Sponge", limitType:"Bob");  

// …
Run Code Online (Sandbox Code Playgroud)

c# generics dictionary tuples

6
推荐指数
1
解决办法
1763
查看次数

如何验证单元测试中的日志消息以通过测试?

我正在测试一个端点。我需要弄清楚如何让我的 loggerMock 测试通过。以下是我目前设置测试的方式:

public void GetExceptionReportSessionData_Returns200OK()
        {
            //Arrange 
            var response = new RetrieveExceptionReportSessionDatesResponse
            {
                RetrieveExceptionReportSessionDatesResult = string.Empty
            };
            var serviceClient = new Mock<WorkflowService.WorkflowService>();      
            serviceClient
                .Setup(x => x.RetrieveExceptionReportSessionDatesAsync(It.IsAny<RetrieveExceptionReportSessionDatesRequest>()))
               .ReturnsAsync(response);

            var loggerMock = new Mock<ILogger>();
            loggerMock.Setup(x => x.LogInfo(null));

            var controller = new ExceptionReportController(loggerMock.Object);

            var ctx = new ControllerContext() { HttpContext = new DefaultHttpContext() };
            ctx.HttpContext.Request.Headers["token"] = "fake_token_here"; //Set header
            controller.ControllerContext = ctx;

            //Act
            var result = controller.GetExceptionReportSessionData();

            //Assert
            var viewResult = Assert.IsType<OkObjectResult>(result);
            Assert.Equal(StatusCodes.Status200OK, viewResult.StatusCode);


        }
Run Code Online (Sandbox Code Playgroud)

以下是返回 200 时记录器在端点中的设置方式:

if (result != null …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing moq xunit asp.net-core

6
推荐指数
2
解决办法
2万
查看次数