小编Sup*_*JMN的帖子

如何处理时间耦合?

我因此而苦苦挣扎:

我的类有一些具有时间耦合的方法.这是,一些方法治法,必须先调用为"初始化"的数据的methodB需要正常工作.

我通常通过将违规依赖 作为参数传递给"MethodB"来显式化时间耦合,就像在这个片段中一样:

private class SomeClass
{
    private string field;
    private int count;

    public SomeClass()
    {
        MethodA();
        MethodB(field);
    }

    private void MethodA()
    {
        field = "Something";
    }

    private void MethodB(string str)
    {
        count = str.Length;
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然它使事情明确,但我觉得我做错了.我最终得到了根本不使用字段的方法(静态方法!),所以这个类开始变得不那么紧密了.

这是最好的方法吗?(通过传递参数失去凝聚力)

编辑:关于一些建议使用字段作为构造函数中的参数或使用构建器模式来避免无效状态的答案:我不能这样做,因为在我的情况下我正在构建一个Parser.MethodA读取输入并根据它设置状态(从文件中读取字符),然后调用MethodB.必须以正确的顺序调用它们.这是真正的问题:应该在另一个之前调用一个.

c# oop decoupling

5
推荐指数
2
解决办法
1882
查看次数

ReactiveUI,WPF和验证

我已经看到ReactiveUI过去具有验证功能。当前,在6.5版中,我找不到与之相关的任何内容。

您是否知道使用ReactiveUI在WPF中有或多或少的官方方式来处理验证任务?

.net c# validation wpf reactiveui

5
推荐指数
1
解决办法
993
查看次数

父节点内列表的序列化(集合扁平化)

我必须生成这样的 XML 结构(使用 .NET 序列化):

<Person>
   <Name>John</John>
   <Address>Address1</Address>
   <Address>Address2</Address>
   <Address>Address3</Address>
</Person>
Run Code Online (Sandbox Code Playgroud)

目前,我有一个class Person名为 a 的List<string> Addresses内部。

我认为XmlSerializer默认情况下会创建一个<Addresses>节点,将每个地址作为子元素,所以我会得到:

<Person>
   <Name>John</John>
   <Addresses>           
      <Address>Address1</Address>
      <Address>Address2</Address>
      <Address>Address3</Address>
   </Addresses>
</Person>
Run Code Online (Sandbox Code Playgroud)

不是我需要的。

我的问题是,是否可以将里面的所有地址扁平化<Person>

.net c# xml collections serialization

5
推荐指数
1
解决办法
1166
查看次数

DataTemplate 中的 TemplateBinding 不起作用

我正在创建一个模板控件我的通用 Windows 应用程序中。

问题是,在<Button Content="{Binding}" Command="{TemplateBinding AddCharCommand}" />TemplateBinding不起作用。

似乎问题是因为它是在一个 DataTemplate.

这是Style应用到我的控件的模板。

<Style TargetType="local:CoordinatesControl">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="local:CoordinatesControl">

                <ListView ItemsSource="{TemplateBinding Numbers}">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <Button Content="{Binding}"
                                    Command="{TemplateBinding AddCharCommand}" />
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>

            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

.net xaml uwp windows-10-universal

5
推荐指数
1
解决办法
359
查看次数

基于SSH.NET的彩色终端模拟器

我正在使用SSH.NET为UWP创建我的终端应用程序.

现在,我已经能够使用库发送/接收数据了,但我想做一些像putty应用程序,它显示不同颜色的文本,甚至能够使用Linux"vi编辑文件"编辑.

有没有办法通过这个库获取颜色/位置信息?

谢谢!

.net c# ssh terminal ssh.net

5
推荐指数
1
解决办法
2330
查看次数

用自定义类重新获取[FromQuery]不会获取值

我的Web API中的Get方法遇到问题:API获取对象但具有默认值。

例如:

myRefitClient.GetSummary(new MyClass() { Prop = 1 });
Run Code Online (Sandbox Code Playgroud)

Web API正确接收MyClass实例,但Prop为0!

这就是我所拥有的:

Get方法(Web API中的Controller):

[HttpGet]
async Task<ActionResult> Get([FromQuery]MyClass req)
Run Code Online (Sandbox Code Playgroud)

MyClass是:

public class MyClass
{
    public int Prop { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的Web API Refit接口是:

public interface IMyWebApi
{
    [Get("/api/mycontroller")]
    Task<PositionSummary> GetSummary(MyClass req);
}
Run Code Online (Sandbox Code Playgroud)

因此,正如我所说,在致电时:

service.GetSummary(new MyClass() { Prop = 1 });
Run Code Online (Sandbox Code Playgroud)

MyClass在控制器中得到一个实例,但Prop为0,而不是1。

我究竟做错了什么?

.net c# asp.net-web-api refit

5
推荐指数
1
解决办法
357
查看次数

强制不区分大小写的String.Contains in Entity Framework Core

有没有办法强制LINQ to SQL执行不区分大小写的包含?

我在Entity Framework Core上使用PostgreSQL.

提前致谢!

.net c# string case-insensitive entity-framework-core

5
推荐指数
1
解决办法
2566
查看次数

单实例 .NET Core 应用程序(或使 crontab 仅运行我的应用程序的 1 个实例)

我想使用crontab在 Linux 中按计划执行 .NET Core 应用程序。这是一个长时间运行的操作,如果前一个执行尚未完成我不希望运行另一个实例。换句话说,我不希望crontab在给定时间执行多个 .NET Core App 实例。

有什么办法可以避免吗?我不想修改我的应用程序的代码。也许 crontab 有一个选项可以避免并发。我不是 Linux 专家(还):)

.net c# linux cron .net-core

5
推荐指数
2
解决办法
2504
查看次数

创建PowerShell管道以在C#中读取异步

我想在C#中创建等效的:

PS > Get-Disk | Get-Partition
Run Code Online (Sandbox Code Playgroud)

我试过这个:

using (var r = RunspaceFactory.CreateRunspace())
{             
    var pipeline = r.CreatePipeline();

    var gd = new Command("Get-Disk");
    var gv = new Command("Get-Partition");

    pipeline.Commands.Add(gp);
    pipeline.Commands.Add(gv);

    var results = pipeline.Invoke()
}
Run Code Online (Sandbox Code Playgroud)

但这不是同步.我想创建管道并异步读取它.可能吗?

谢谢!

注意:这是相关的,但不是async:如何在c#中使用pipe powershell命令

c# powershell

5
推荐指数
1
解决办法
224
查看次数

可观察管道中的异常处理

我创建了一个 observable,它由一个项目通过运行异步方法转换为另一个项目组成。

IObservable<Summary> obs = scanner.Scans
                    .SelectMany(b => GetAssignment(b))
                    .SelectMany(b => VerifyAssignment(b))
                    .SelectMany(b => ConfirmAssignmentData(b))
                    .SelectMany(b => UploadAsset(b))
                    .Select(assignment => new Summary())
                    .Catch(LogException());
Run Code Online (Sandbox Code Playgroud)

我想让这个防故障,所以如果在处理过程中抛出异常,我应该记录异常,但忽略异常并继续下一次扫描(由 推送的下一个项目scanner.Scans

当前代码捕获任何异常,但一旦抛出异常,序列就会结束。

我怎样才能让它“吞下”异常(记录它),但要继续下一个项目?

.net c# error-handling reactive-programming system.reactive

5
推荐指数
0
解决办法
86
查看次数