目前缺乏关于DI主题的文档 - 依赖注入.有人可以帮我理解以下内容:
这些注册有什么区别?
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)我们的移动网络应用程序具有粘性底部导航功能,就像您在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)
在纵向模式下,它始终可见:
在横向模式下,您可以在屏幕上滚动显示顶部地址栏的大小:
有人遇到过这样的问题吗?我将不胜感激任何帮助使页脚留在屏幕上.谢谢
似乎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?
问题是如果对象足够复杂(在任何强类型语言中),在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) 我有一个像这样的父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) 我一直在玩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)
这是什么原因?
我的一个服务使用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) 在开始之前,我在 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) 我想知道运营商是否有广泛认可的名称===。类似“IIFE”的东西(function () {})();
我正在尝试使用最小起订量在 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# ×3
unit-testing ×3
javascript ×2
.net ×1
angular ×1
asp.net ×1
asp.net-core ×1
asp.net-mvc ×1
css ×1
express ×1
hash ×1
hierarchyid ×1
html ×1
http ×1
http-headers ×1
httpcontext ×1
ios ×1
mobile ×1
mocking ×1
moq ×1
naming ×1
nhibernate ×1
operators ×1
razor ×1
reflection ×1
sql-server ×1
t-sql ×1
typescript ×1