我已经看到了一些在javascript中实例化对象的不同方法,想知道各种方法的优点/缺点以及为什么要使用其中一种方法.
方法1
var obj = {
prop: value,
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
方法一是标准方法,没什么新的:)
方法2
var obj = new function() {
var prop1 = value1;
var fn1 = function() {
};
.
.
.
this.prop2 = value2;
.
.
.
}();
Run Code Online (Sandbox Code Playgroud)
函数方法,我想将此方法与方法3进行比较.函数方法主要用于封装(正确吗?)
方法3
var obj = (function() {
var prop1 = value1;
var fn1 = function() {
};
.
.
.
return {
prop2: value2,
.
.
.
}
})();
Run Code Online (Sandbox Code Playgroud)
通过这种方法,我不太清楚其使用背后的原因.它与方法2有何不同?两者都可用于封装逻辑.
是这样我们可以传递参数,所以我们可以处理任何潜在的冲突?例如jquery的$
语法 - 但你也可以用方法2做到这一点......
谢谢.
编辑:
我知道方法1和3是相似的(因为它们都返回对象)但是方法3也创建了一个闭包.哪种方法2也有.
这是我的问题的基础,2和3都创建了闭包,但它们之间有什么区别.
我已经开始使用tsqlt了,我的问题是,是否有可能只有测试内容的单独数据库?(表/ sp /汇编等).
此测试数据库将与实际/目标数据库位于同一实例上.
如果我试图伪造一个表,我会收到以下错误:
FakeTable could not resolve the object name, 'target_db.dbo.Sometable'
Run Code Online (Sandbox Code Playgroud)
有没有人有这方面的经验?
谢谢.
我不太清楚该怎么做.基本上我有一张这样的桌子
UserId DateRequested Approved ApprovedBy Notes
------------ ----------------------- -------- ----------- -----
1 2011-05-26 0 NULL NULL
1 2011-05-27 0 NULL NULL
1 2011-05-28 0 NULL NULL
1 2011-06-05 0 NULL NULL
1 2011-06-06 0 NULL NULL
1 2011-06-25 0 NULL NULL
Run Code Online (Sandbox Code Playgroud)
这基本上包含员工请求假期的日子.现在,当授予一天或几天时,需要将此数据复制到表单的表中
UserId DateFrom DateTo
Run Code Online (Sandbox Code Playgroud)
所以基本上对于我想要的上述数据:
UserId DateFrom DateTo
-------------------------------
1 2011-05-26 2011-05-28
1 2011-06-05 2011-06-06
1 2011-06-25 2011-06-25
Run Code Online (Sandbox Code Playgroud)
即我想在DateFrom和DateTo中连续几天.现在我不知道如何在不使用while循环的情况下执行此操作.这是SQL,所以我更喜欢非迭代的解决方案.
请指教!!!
我决定用 F# 与 MVC4 和 Nhibernate 一起进行一个相对较大的项目。
现在,在 C# 中,我通常使用 ORM 的做法是为某些属性(例如自动递增/身份属性、时间戳等)设置私有设置器。IE
public class Guide
{
public int Id { get; private set; }
public DateTime Created { get; private set; }
public Guide()
{
Created = DateTime.Now;
}
}
Run Code Online (Sandbox Code Playgroud)
这里 id 是一个“身份列”,ORM 将处理设置它的值。
在 F# 中,这是我目前所拥有的
type public Guide() =
member val public Id = 0 with get, set
member val public Created = DateTime.MinValue with get, set
Run Code Online (Sandbox Code Playgroud)
但是我遇到的问题是getter/setter不能有访问修饰符!
我是 F# 新手,所以我想知道执行此类操作的最佳方法。但是,我不只是想用 F# 重写 C# 代码!我想知道正确的(功能)方法。也许使用其他一些构造?
编辑:对于 NHibernate,在 setter …
我有一个Web项目,需要从外部soap服务更新网页上的统计信息/日志.我决定采用的方法是使用signalR,通过使用代码执行服务方法并将结果返回给所有连接的客户端.此代码将持续执行,服务调用之间会有延迟.
我无法将所有碎片放在一起,可能是因为我不确定应该去哪里!这是我到目前为止所做的粗略细分
class Data { ... }
interface IDataService
{
Task GetDataAsync(TimeSpan interval, CancellationToken cancellationToken, Action<Data> callback);
}
class DataService : IDataService
{
private readonly ExternalService _externalService;
public async Task GetDataAsync(TimeSpan interval, CancellationToken cancellationToken, Action<Data> callback)
{
while (!cancellationToken.IsCancellationRequested)
{
var data = await this._externalService.GetData();
callback(data);
await Task.Delay(interval).ConfigureAwait(false);
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以上面是从外部服务获取数据并执行回调的逻辑.至于signalR,我唯一做的就是如下
public class DataHub : Hub
{
private readonly IDataService _service;
public DataHub(IDataService service)
{
this._service = service;
}
public async Task GetData()
{
var tenSeconds = new TimeSpan(0, …
Run Code Online (Sandbox Code Playgroud) 我有一个使用JavaScript库的组件.目前我只是使用system.js来加载依赖项
public ngOnInit() {
System.import('lib').then(() => this.createControl());
}
Run Code Online (Sandbox Code Playgroud)
然而,组件初始化的这种延迟导致另一个消耗组件的问题.基本上这个createControl
功能运行得太晚了.
是否可以使用angular延迟整个组件的初始化,直到下载所有依赖项为止?
我想用我从服务中检索的数据来引导我的应用程序.我正在做一些事情
let dependencies = [
//... a load of dependencies
MyService
];
let injector = Injector.resolveAndCreate(dependencies);
let service: MyService = injector.get(MyService);
service.getData() // returns observable
.toPromise()
.then((d) => {
// use data to append to dependencies
bootstrap(App, dependencies)
});
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我不喜欢两次使用依赖数组,有没有更简洁的方法这样做?我可以在bootstrap之后向应用程序注入器添加内容吗?另外我注意到bootstrap函数返回一个promise,我可以使用这个promise来阻止应用程序的引导直到我的ajax请求完成之后吗?
当然,对于Injector
我来说,我只能使用那些所需的依赖关系,MyService
但是这使得它非常脆弱,你可以想象.
基本上我正在尝试使用表达式树来做到这一点
var properties = new Dictionary<string, object>();
foreach (var propInfo in objType.GetTypeInfo().GetProperties(BindingFlags.Public))
{
var name = propInfo.Name;
var value = propInfo.GetValue(objInstance);
properties.Add(name, value);
}
return properties;
Run Code Online (Sandbox Code Playgroud)
即创建一个名称和值对的字典,其中名称是属性的名称,objType
值是实例objInstance
的属性值objType
现在将其转换为表达式应该编译为一个简单的委托
Func<T, Dictionary<string, object>> func = i =>
{
var properties = new Dictionary<string, object>();
properties.Add("Prop1", (object)i.Prop1);
properties.Add("Prop2", (object)i.Prop2);
properties.Add("Prop3", (object)i.Prop3);
// depending upon the number of properties of T, Add will continue
return properties;
};
Run Code Online (Sandbox Code Playgroud)
我知道如何执行其中的一些操作,但我不确定如何创建字典的本地实例,然后在后续表达式中使用它(并返回它)?
我已经看到了await
关键字是如何实现的以及它创建的结果结构。我认为我对此有基本的了解。但是,是
public async Task DoWork()
{
await this.Operation1Async();
await this.Operation2Async();
await this.Operation3Async();
}
Run Code Online (Sandbox Code Playgroud)
“更好”(通常来说)或
public async Task DoWork()
{
await this.Operation1Async();
this.Operation2();
this.Operation3();
}
Run Code Online (Sandbox Code Playgroud)
第一种方法的问题在于,它正在Task
为每个等待呼叫创建一个新的?哪个需要一个新线程?
鉴于第一个在第一个Task
上创建了一个新项await
,然后新项中处理了其中的所有内容Task
?
编辑 好吧,也许我不太清楚,但是例如,如果我们有
while (await reader.ReadAsync())
{
//...
}
await reader.NextResultAsync();
// ...
Run Code Online (Sandbox Code Playgroud)
这不是在创建两个任务吗?ReadAsync
在这个新创建的任务中,主线程中的第一个任务是第一个任务,然后是另一个任务NextResultAsync
。我的问题是确实需要第二个任务,在主线程中创建的一个任务不够吗?所以
while (await reader.ReadAsync())
{
//...
}
reader.NextResult();
// ...
Run Code Online (Sandbox Code Playgroud) 我在 httpDELETE
请求中使用正文。我知道目前在删除中有一个正文是非标准的(但允许)。
使用HttpClient
不允许删除请求的正文时会出现问题。我知道我可以只使用SendAsync
,但我宁愿让我的 API 更灵活。
我希望这个机构是可选的。从某种意义上说,如果 asp.net core 无法确定内容类型,则忽略它。目前,asp.net 核心返回 415,即使没有发送正文(通过HttpClient
- 所以内容长度应该为 0)。
可以FromBody
这样扩展吗?或者我是否需要在管道中使用一些自定义逻辑?
c# ×4
angular ×2
async-await ×2
t-sql ×2
typescript ×2
asp.net ×1
asp.net-core ×1
asp.net-mvc ×1
asynchronous ×1
c#-to-f# ×1
expression ×1
f# ×1
http ×1
javascript ×1
nhibernate ×1
reflection ×1
signalr ×1
sql ×1
sql-server ×1
systemjs ×1
tsqlt ×1