小编Geo*_*uer的帖子

编写equals运算符时处理null的最佳方法

可能重复:
如何在没有无限递归的情况下检查'=='运算符重载中的空值?

当我为对象重载==运算符时,我通常写这样的东西:

    public static bool operator ==(MyObject uq1, MyObject uq2) {
        if (((object)uq1 == null) || ((object)uq2 == null)) return false;
        return uq1.Field1 == uq2.Field1 && uq1.Field2 == uq2.Field2;
    }
Run Code Online (Sandbox Code Playgroud)

如果你没有向下转换为对象,那么函数可以自我复制,但我不得不怀疑是否有更好的方法?

c# equals operator-overloading

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

什么时候使用部分嘲笑?

我开始对假货,短款,嘲笑和动态嘲笑的想法感到满意.但是我在理解何时使用部分嘲讽时仍然有点不确定.

看起来如果你计划嘲笑服务并且需要求助于部分模拟,那么它就是设计糟糕的标志.是否部分模拟主要用于获取测试覆盖范围内的遗留代码?

另一方面,假设我正在测试一个具有Reset()方法的类.如果我已经在单独的测试中确认Reset()方法有效,并且我有一些类的功能应该以对此方法的调用结束,那么测试设计的部分模拟和运行是否很差对部分模拟进行测试,在Reset()方法上定义Expectation.

我目前以这种方式设置了几个测试,这种事情会让我以后遇到麻烦吗?

mocking

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

如何将数据验证与我的简单域对象(PO​​CO)分开?

这个问题与语言无关,但我是C#家伙所以我使用术语POCO来表示一个只能预先形成数据存储的对象,通常使用getter和setter字段.

我只是将我的领域模型重新设计成超级PCOO,并且对于如何确保属性值在域中有意义而留下了一些问题.

例如,服务的EndDate不应超过服务所在合同的EndDate.但是,将检查放入Service.EndDate设置器似乎违反了SOLID,更不用说随着需要完成的验证数量增加,我的POCO类将变得混乱.

我有一些解决方案(将在答案中发布),但它们有其缺点,我想知道解决这一难题的最佳方法是什么?

language-agnostic separation-of-concerns solid-principles modular-design

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

Oracle - 如何向用户授予对其他用户对象的权限

我需要向用户TARGETUSER提供选择/插入/更新用户SOURCEUSER的所有表的权限(我可以从这里看出这一切)以及运行所有存储过程的能力.

基本上,如果我能为TARGETUSER提供SOURCE_USER对象的所有非ddl活动的能力,我不会抱怨.我该怎么做呢?

oracle permissions grant

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

什么是System.Reflection.Module?

刚刚Assembly.LoadModule()在intellisense中注意到了.我看到它返回对基本未记录的Module类的引用.

我知道反思很好,我从来没有听说过模块吗?这些是什么?这个名字很诱人.

.net reflection base-class-library

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

为什么在解析WebApi时没有加载标识,而是在解析Mvc控制器时

我正在使用Autofac进行Inversion of Control容器,其配置如下

    public void Configuration(IAppBuilder app) {
        configureIoC(app);
        configureAuth(app);
    }

    void configureIoC(IAppBuilder app) {
        var b = new ContainerBuilder();
        //...
        b.Register(c => HttpContext.Current?.User?.Identity 
                    ?? new NullIdentity()).InstancePerLifetimeScope();
        var container = b.Build();
        app.UseAutofacMiddleware(container);
        DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
    }
Run Code Online (Sandbox Code Playgroud)

我相信这是Autofac与其他容器的事实可能与我所看到的无关.在这里,他们重点线是一个配置上的任何依赖IIdentity从采摘HttpContext.Current.

我这样使用它,这样我就可以随时随地访问当前用户.

public interface ICurrentUser {
    Task<AppUser> Get();
}
public class CurrentUserProvider : ICurrentUser {
    public async Task<AppUser> Get() => await users.FindByNameAsync(currentLogin.GetUserId());

    public CurrentUserProvider(AppUserManager users, IIdentity currentLogin) {
        this.users = users;
        this.currentLogin = currentLogin;
    }

}
Run Code Online (Sandbox Code Playgroud)

我在过去的项目中使用了这种模式,它运行良好.我正在将它应用于现有项目并看到一个非常奇怪的事情. …

asp.net asp.net-mvc asp.net-web-api asp.net-identity

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

使用不同高度的行进行柔性包装

我正在使用hash-tag链接实现仅限css的选项卡.我非常接近,但不能让柔性包装正常工作.为了让一切按照我想要的方式工作:target(我之前用单选按钮完成了这个并且提供了更多的灵活性),我需要所有选项卡和所有部分在同一级别,所以我有:

body
  section
  anchor
  section
  anchor
  ...
Run Code Online (Sandbox Code Playgroud)

然后我可以使用flexbox排序使所有锚点首先显示并适当地设置样式,将所有部分设置为宽度100%并使用flex-wrap它们来包装到下一行.问题是我似乎无法控制第一行的高度.这里发生了什么?

body {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  margin: 0;
  padding: 0;
  height: 100vh;
  outline: 1px solid green;
}
body > a {
  padding: 10px;
  margin: 0 5px;
  order: -1;
  flex-grow: 0;
  border: solid gray;
  border-width: 1px 1px 0 1px;
}
body > a:last-of-type {
  order: -2;
}
section {
  flex-grow: 1;
  width: 100%;
  background-color: cornsilk;
  display: none;
  border-top: 1px solid grey;
}
section:last-of-type {
  display: flex;
} …
Run Code Online (Sandbox Code Playgroud)

html css css3 flexbox

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

为什么在访问虚拟机上托管的 localhost iisexpress 站点时会收到 403

所以在开始之前,我知道如何向网络开放 IISExpress,有很多关于此的文章,我什至写了一篇. 然而,这些方法确实有局限性 - 最明显的是需要添加绑定,我发现这些绑定是偶然的,更糟糕​​的是,会破坏任何基于主机名执行操作的代码。

我在 Parallels 中运行 Windows 10 的 OsX 上,本周早些时候,我想我应该尝试将 localhost 转发到虚拟机中,就像使用 docker 容器一样。

我已经很接近了,但我不知道最后一步。这是我所做的和我所看到的:

  1. 我暂时禁用了 Windows 上的防火墙
  2. 我将正确的端口(在本例中为 44300)转发到来宾虚拟机并重新启动它。
  3. 我通过命令行运行 iisexpress,以便可以看到完整的日志(我也通过 Visual Studio 尝试过)

我看到的是,当我localhost:44300从虚拟机内部点击时,我的网站加载良好并且记录了各种内容。

但是当我从主机上点击它时,我得到了

HTTP 错误 403。请求 URL 被禁止。

在这种情况下,iisexpress 没有记录任何内容。

但是,我知道请求以某种方式通过,因为如果我停止 iisexpress 并localhost:44300再次在主机上访问,我会得到标准

本地主机拒绝连接。ERR_CONNECTION_REFUSED

因此,iisexpress 是否在该端口上侦听的事实正在级联到主机虚拟机,但没有其他内容通过。

所以我有点不知所措 - 它几乎看起来有点像一个绑定的东西,但据 iisexpress 所知,由于端口转发,这个请求不是来自localhost?它如何判断它是否不是?由于缺乏日志消息,这听起来不太可能。而且我从来没有在提琴手中看到任何弹出的东西。

我想知道是否可能还有其他一些Windows 组件看到绑定到 44300 的东西,看到来自网络堆栈的请求,然后将其关闭。这是一件事吗?

windows parallels iis-express

7
推荐指数
0
解决办法
510
查看次数

netsh http add urlacl 的委托参数是什么

关于netsh http工作原理的文档非常稀少,几乎没有任何可用的在线内容。我们这里有delegate根据文档的参数

指定以下值之一: yes:允许用户委派 URL no:拒绝用户委派 URL。这是默认值。

这到底是什么意思?委托 URL 是什么意思?(或者就此而言,是否有任何地方可以更好地解释 urlacl 的概念?)

windows networking http

7
推荐指数
0
解决办法
284
查看次数

运行“dotnet test”时显示“dotnet vstest”输出接收器的输出

编辑:下面是最初与标题一起发布的前一个问题

xunit 在控制台中运行时显示 ITestOutputHelper 输出

经过调查(见评论),这个问题仍然非常相关,需要一个答案,但似乎它应该针对vstest框架和围绕输出接收器而不是 xunit。

现在的具体问题是:当某些内容写入dotnet vstest输出接收器时,如何dotnet test在从命令行运行时显示它。具体来说,我希望能够设置一个观察者dotnet watch来持续运行测试,我更关心输出而不是结果(我将它用作测试系统,而更多地用作开发笔记本)。而且我不想局限于 Visual Studio 或 vscode。

原问题:

在我的测试课上,我有

    [Fact]
    public void Test() {

       output.WriteLine("WHATEVER");

    }
    readonly ITestOutputHelper output;

    public GroceryTests(ITestOutputHelper output) => this.output = output;
Run Code Online (Sandbox Code Playgroud)

当我通过 vscode 编辑器集成运行它时,我可以在“输出”窗格中看到输出。当我通过它运行它时,dotnet test我没有。如何通过控制台显示此输出?

.net vstest

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