小编And*_*ren的帖子

为什么会在内置的ASP.NET Core DI Container上使用第三方DI Container?

目前缺乏关于DI主题的文档 - 依赖注入.有人可以帮我理解以下内容:

  1. 这些注册有什么区别?

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddTransient<IService, Service>();
        services.AddScoped<IService, Service>();
        services.AddSingleton<IService, Service>();
        services.AddInstance(service);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用内置DI优于现有解决方案(NInject,Autofac,Structure Map)的优缺点是什么?
  3. 默认依赖注入的当前限制是什么(如果有的话)?

asp.net dependency-injection asp.net-core

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

在Safari Mobile 10.3粘性页脚可以在屏幕上滚动

我们的移动网络应用程序具有粘性底部导航功能,就像您在iOS应用程序中经常发现的那样,在Safari 10.3 仅在横向上发布后,可以在屏幕上滚动粘性导航(页脚).虽然它已经position: fixed设置bottom: 0并且在旧的Safari版本上也是不可能的.

粘性导航/页脚的样式如下:

footer {
  position: fixed;
  height: 50px;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(255, 0, 0, 0.7);
}
Run Code Online (Sandbox Code Playgroud)

DEMO试试手机

在纵向模式下,它始终可见:

人像模式

在横向模式下,您可以在屏幕上滚动显示顶部地址栏的大小:

在此输入图像描述

有人遇到过这样的问题吗?我将不胜感激任何帮助使页脚留在屏幕上.谢谢

html css mobile mobile-safari ios

29
推荐指数
2
解决办法
6245
查看次数

ASP.NET MVC以小写形式呈现html标记和属性

似乎Asp.net MVC Core和Asp.net MVC 5.x都以小写形式呈现html标签和属性,这种行为破坏了角度绑定.举个例子:在我的view.cshtml定义Angular组件中使用驼峰案例绑定:

<my-component [fooBar]="foo"></my-component>

后来呈现为:

<my-component [foobar]="foo"></my-component>

至于Angular绑定区分大小写,fooBar组件内的输入属性仍然存在undefined.有没有办法覆盖这种渲染行为并按原样呈现html?

asp.net-mvc razor angular

12
推荐指数
1
解决办法
245
查看次数

模拟打字稿单元测试

问题是如果对象足够复杂(在任何强类型语言中),在Typescript中进行模拟可能会变得棘手.你通常会为了编译代码而模拟一些额外的东西,例如,在C#中你可以使用AutoFixture或类似的东西.另一方面,Javascript是动态语言,并且可以仅模拟测试运行所需的对象的一部分.

因此,在Typescript单元测试中,我可以使用any类型声明我的依赖项,因此可以轻松地模拟它.你看到这种方法的任何缺点吗?

let userServiceMock: MyApp.Services.UserService = {
    // lots of thing to mock
}
Run Code Online (Sandbox Code Playgroud)

VS

let userServiceMock: any = {
    user: {
         setting: {
             showAvatar: true
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing mocking typescript

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

HierarchyID:获取父项列表的所有后代

我有一个像这样的父ID列表,100, 110, 120, 130它是动态的,可以改变.我希望在一组中获得指定父项的所有后代.为了获得单亲的孩子,我使用了这样的查询:

WITH parent AS (
    SELECT PersonHierarchyID FROM PersonHierarchy
    WHERE PersonID = 100    
)
SELECT * FROM PersonHierarchy
WHERE PersonHierarchyID.IsDescendantOf((SELECT * FROM parent)) = 1
Run Code Online (Sandbox Code Playgroud)

不知道如何为多个父母这样做.我的第一次尝试是写几个工会的东西,但我确信应该有更聪明的方法来做到这一点.

SELECT * FROM PersonHierarchy 
WHERE PersonHierarchyID.IsDescendantOf(
    (SELECT PersonHierarchyID FROM PersonHierarchy WHERE PersonID = 100)
) = 1
UNION ALL
SELECT * FROM PersonHierarchy 
WHERE PersonHierarchyID.IsDescendantOf(
    (SELECT PersonHierarchyID FROM PersonHierarchy WHERE PersonID = 110)
) = 1
UNION ALL ...
Run Code Online (Sandbox Code Playgroud)

PS我也发现这样的查询来选择可能有用的ID列表:

SELECT * FROM (VALUES (100), (110), (120), (130)) AS …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server hierarchyid

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

为什么响应304没有Content-Type标头?

我一直在玩express.js试图返回简单的json对象,并注意到即使我明确设置了Content-Type标题,application/json它只在第一个响应时可见,当状态代码是200时.每个跟随304的响应都没有Content-Type标题.

我的代码示例:

app.get('/user', function (req, res) {
    res.set('Content-Type', 'application/json');

    res.send([
        { user: "john", email: "john@example.com"},
        { user: "marry", email: "marry@example.com"},
        { user: "dan", email: "dan@example.com"}
    ]);
});
Run Code Online (Sandbox Code Playgroud)

这是什么原因?

http http-headers express

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

在HttpContext.Current.Request中模拟ServerVariables

我的一个服务使用IIS通过此类代码提供的服务器变量

var value = System.Web.HttpContext.Current.Request.ServerVariables["MY_CUSTOM_VAR"];
Run Code Online (Sandbox Code Playgroud)

我试过的是模拟那些对象并插入我自己的变量/集合并检查几个案例(例如变量丢失,值为null ...)我能够创建HttpContext,HttpRequest,HttpResponse的实例并分配它们但是它们中的每一个都只是一个没有接口或虚拟属性的普通类,并且ServerVariables的初始化发生在某个地方.

HttpContext嘲笑:

var httpRequest = new HttpRequest("", "http://excaple.com/", "");
var stringWriter = new StringWriter();
var httpResponse = new HttpResponse(stringWriter);
var httpContextMock = new HttpContext(httpRequest, httpResponse);
HttpContext.Current = httpContextMock;
Run Code Online (Sandbox Code Playgroud)

尝试#1通过反射调用私有方法

var serverVariables = HttpContext.Current.Request.ServerVariables;
var serverVariablesType = serverVariables.GetType();
MethodInfo addStaticMethod = serverVariablesType.GetMethod("AddStatic", BindingFlags.Instance | BindingFlags.FlattenHierarchy | BindingFlags.NonPublic);

addStaticMethod.Invoke(serverVariables, new object[] {"MY_CUSTOM_VAR", "value"});
Run Code Online (Sandbox Code Playgroud)

失败,错误表明集合是只读的.

尝试#2用我自己的实例替换ServerVariables

var request = HttpContext.Current.Request;
var requestType = request.GetType();
var variables = requestType.GetField("_serverVariables", BindingFlags.Instance | BindingFlags.NonPublic);

variables.SetValue(request, new NameValueCollection
{ …
Run Code Online (Sandbox Code Playgroud)

c# reflection unit-testing httpcontext

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

在 C# 中实现 GetHashCode。空值处理

在开始之前,我在 Mono 环境中测试了这里的所有代码示例,并且在GetHashCode实现上有一个明显的区别:

string.Empty.GetHashCode(); // returns 0 in Mono 3.10
string.Empty.GetHashCode(); // returns 757602046 in .NET 4.5.1
Run Code Online (Sandbox Code Playgroud)

我根据@JonSkeet 的这个SO Answer进行了我的实现,并且在评论中他还建议对 NULL 值使用 0 哈希码(不确定我应该如何对它们进行哈希处理)。

我通常使用 0 作为 null 的有效哈希码 - 这与忽略该字段不同。

所以有以下实现(Mono 3.10):

public class Entity {
    public int EntityID { get; set; }
    public string EntityName { get; set; }

    public override int GetHashCode() {
        unchecked {
            int hash = 15485863;       // prime number
            int multiplier = 1299709;  // another prime number

            hash …
Run Code Online (Sandbox Code Playgroud)

.net c# hash

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

JavaScript 中“===”运算符的名称是什么

我想知道运营商是否有广泛认可的名称===。类似“IIFE”的东西(function () {})();

javascript naming operators

4
推荐指数
1
解决办法
2079
查看次数

如何使用起订量在单元测试中模拟 Nhibernate .ToListAsync() ?

我正在尝试使用最小起订量在 ASP.NET Core MVC 应用程序中创建单元测试。不幸的是,Nhibernate.ToListAsync()不支持 Linq IQueryabledataset 和 throw System.NotSupportedException: 'Source Provider must be a INhQueryProvider'。在这段代码中,我模拟了INhQueryProvider,但这还不够:

var entities = new List<RequestRole>
{
    new RequestRole()
    {
       Id = 0,
       RequestOperator = new RequestOperator() { Id = 1 }
    },
    new RequestRole()
    {
       Id = 1,
       RequestOperator = new RequestOperator() { Id = 2 }
     }
}
.AsQueryable();

// for ToListAsync Mock INhQueryProvider and set it into IQueryable
var queryableProviderMock = new Mock<INhQueryProvider>();
queryableProviderMock.Setup(x => x.ExecuteAsync<IEnumerable<RequestRole>>(It.IsAny<Expression>(), …
Run Code Online (Sandbox Code Playgroud)

c# nhibernate unit-testing moq

4
推荐指数
1
解决办法
2299
查看次数