我很难弄清楚在TypeScript中是否可以声明一个静态类型的函数数组.
例如,我可以这样做:
foo: (data:string) => void = function (data) {};
Run Code Online (Sandbox Code Playgroud)
但是如果我想让foo成为一个函数数组,它接受一个字符串而不返回任何内容,那我该怎么做呢?
foo: (data:string) => void [] = [];
Run Code Online (Sandbox Code Playgroud)
不起作用,因为TypeScript认为它是一个接受一个字符串并返回一个void数组的函数,它似乎不喜欢我试图将函数包装在括号中.
有任何想法吗?
答:感谢下面的mohamed,这是一个适用于TypeScript Playground的示例:
class whatever {
public foo: { (data: string): void; }[] = [];
dofoo() {
for (var i=0; i < this.foo.length; i++) {
this.foo[i]("test");
}
}
}
var d = new whatever();
d.foo.push(function(bar){alert(bar)})
d.foo.push(function(bar){alert(bar.length.toString())})
d.dofoo();
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用MySQL的实体框架,我得到上述错误.我安装了最新的MySQL连接器.
完整错误如下:
No Entity Framework provider found for 'MySql.Data.MySqlClient' ADO.NET provider. Make sure the provider is registered in the 'entityFramework' section of the application config file.
Run Code Online (Sandbox Code Playgroud)
但是,我找不到任何暗示你如何在'entityFramework'部分注册它的东西.
其他一些帖子(示例)建议将提供程序添加到以下system.Data DbProviderFactories部分:
<DbProviderFactories>
<add
name="MySQL Data Provider"
invariant="MySql.Data.MySqlClient"
description=".Net Framework Data Provider for MySQL"
type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data,
Version=6.2.3.0, Culture=neutral,
PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为它声称invariant名称是重复的.而且,如果我实际迭代,System.Data.Common.DbProviderFactories我可以看到最后一个是MySQL提供者:
MySQL Data Provider
.Net Framework Data Provider for MySQL
MySql.Data.MySqlClient
MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.6.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d
Run Code Online (Sandbox Code Playgroud)
所以提供商在那里,但EF拒绝使用它.有任何想法吗?
我的完整配置如下所示:
<configuration>
<configSections>
<!-- For more information …Run Code Online (Sandbox Code Playgroud) 我有一堆类将在某些时候序列化为JSON,为了遵循后端的C#约定和前端的JavaScript约定,我一直在定义这样的属性:
[JsonProperty(PropertyName="myFoo")]
public int MyFoo { get; set; }
Run Code Online (Sandbox Code Playgroud)
所以在C#中我可以:
MyFoo = 10;
Run Code Online (Sandbox Code Playgroud)
在Javascript我可以:
if (myFoo === 10)
Run Code Online (Sandbox Code Playgroud)
但是为每个房产做这件事都很乏味.是否有一种快速简便的方法来设置JSON.Net处理属性名称的默认方式,因此除非另有说明,否则它将自动进入案例?
我正在从实体框架调用一个表值函数,并且需要能够添加option (recompile)它,因为它拾取的执行计划不是最佳的.在SQL Server Management Studio中运行查询,它看起来像这样:
select
*
from dbo.fDE_myquery(0, 0, 3309, '7/1/2013', '7/1/2014', 0, 0)
option (recompile)
Run Code Online (Sandbox Code Playgroud)
来自EF,没有办法添加这个提示,AFAIK.EF部分看起来像:
var query = from f in ctx.fDE_myQuery(aBool, anotherBool, StartDate,
EndDate, someInt, moreBool)
select f;
Run Code Online (Sandbox Code Playgroud)
我看到了这个问题:
但它已经过时了,所接受的解决方案并没有提供足够的信息来说明如何使用实体框架实际实施建议的解决方案(使用计划指南).如果这是唯一的解决方案,那么如何让实体框架使用计划指南呢?
我一直在尝试构建一个静态库,然后在Xamarin中创建一个绑定项目.一切正常,直到iOS 7出现.我不得不抓住最新版本的本机库并尝试在XCode 5中构建它,但它一直给我带来各种各样的问题.我认为它可能与构建过程有关,或者可能与XCode 5中的某些更改设置有关(相对于4),但我不确定.
我正在使用这个脚本来构建一个基于这个问题的工作的通用二进制文件:
我注意到的一件事是,之前,在我的二进制版本的旧版iOS 6.1版本(内置在XCode 4中)中,我的二进制文件大约是24 Mb,现在使用XCode 5它已经膨胀到接近50 Mb!这让我觉得编译和链接步骤有问题.
有任何想法吗?有没有其他人在XCode 5(vs 4)中遇到通用二进制文件的问题?
我正在开发一个应用程序,您可以使用OpenXML将一些数据导出到Excel文件.除了使用自动过滤器,一切正常.我们的想法是在数据主体中添加一个自动过滤器,以便用户自动拥有对数据进行过滤和排序的控件.所以在代码中,我做这样的事情:
var filter = new AutoFilter() { Reference = string.Format("{0}:{1}", topLeftCellReference, bottomRightCellReference ) };
worksheet.AppendChild(filter);
Run Code Online (Sandbox Code Playgroud)
在导出的XLSX中,它看起来像这样:
<x:autoFilter ref="A4:L33" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main" />
Run Code Online (Sandbox Code Playgroud)
而且它加入之间的工作sheetData和mergeCells.
然后,我可以在Excel中打开此过滤器,它工作正常.预计如果您尝试对列进行排序,列将排序,然后Excel崩溃.保存和重新加载文件(强制Excel清除所有内容)不能解决问题.但是,如果您首先应用过滤器(比如过滤一个列> 10,然后删除该过滤器,您现在可以排序而不会崩溃.我在应用过滤器并删除它后保存了一个文件,现在该文件很好,但是查看XML对于"已修复"的文件,我没有看到任何明显的区别.
有谁知道可能导致问题的原因是什么?除了将其添加到工作表之外,在应用自动过滤器时还有什么我应该做的吗?
注意:我们使用的是Excel 2010(版本14.0.7153.5000)
这是一个示例文件(单击下载,它将下载为.zip.重命名为.xlsx在Excel中打开.启用编辑,选择其中一列并尝试排序).
编辑:再玩这个.如果您在Excel中重新保存文件,它仍然会被破坏.但是,如果您首先应用过滤器(然后清除它)然后在Excel中重新保存,您将获得一个工作文件.仔细观察两个文件(仍然破坏的重新存档文件和现在正在运行的文件),我注意到在应用过滤器(并清除)后,这个额外的位被添加到工作簿中:
<x:definedNames>
<x:definedName name="_xlnm._FilterDatabase" localSheetId="0" hidden="1">'Sheet 1'!$A$1:$E$11</x:definedName>
</x:definedNames>
Run Code Online (Sandbox Code Playgroud)
不确定这可能是不是......
我正在开发Visual Studio扩展,其中一个函数创建一个新的应用程序域并将程序集加载到该应用程序域中.然后它在app域中运行一些函数.我想做什么,并且不确定是否可能,是否有我的扩展程序将调试器附加到新应用程序域中运行的代码,因此当该代码失败时,我实际上可以看到发生了什么.现在我正在盲目地调试动力加载的组件是一种痛苦.
所以我有一个创建我的app域的类,如下所示:
domain = AppDomain.CreateDomain("Test_AppDomain",
AppDomain.CurrentDomain.Evidence,
AppDomain.CurrentDomain.SetupInformation);
Run Code Online (Sandbox Code Playgroud)
然后创建一个这样的对象:
myCollection = domain.CreateInstanceAndUnwrap(
typeof(MyCollection).Assembly.FullName,
typeof(MyCollection).FullName,
false,
BindingFlags.Default,
null,
new object[] { assemblyPath }, null, null);
Run Code Online (Sandbox Code Playgroud)
MyCollection 在它的构造函数中执行类似的操作:
_assembly = Assembly.LoadFrom(assemblyPath);
Run Code Online (Sandbox Code Playgroud)
所以现在已经加载了程序集,Test_AppDomain因为该MyCollection对象是在该域中创建的.这是我需要能够附加调试器的加载程序集.
在某些时候myCollection创建一个对象的实例并挂钩一些事件:
currentObject = Activator.CreateInstance(objectType) as IObjectBase;
proxy.RunRequested += (o, e) => { currentObject?.Run(); };
Run Code Online (Sandbox Code Playgroud)
基本上我有处理程序RunRequested和运行的地方currentObject?.Run(),我想要附加一个调试器,虽然它可能不是一个问题(并且可能实际上工作得更好)如果先前附加了调试器.
有没有办法实现这一目标?当用户触发将导致在Run调用的新AppDomain中创建的对象的功能的事件时,是否可以以编程方式附加调试器?如何附加调试器(而不是扩展本身)?
我试过这样的事情:
var processes = dte.Debugger.LocalProcesses.Cast<EnvDTE.Process>();
var currentProcess = System.Diagnostics.Process.GetCurrentProcess().Id;
var process = processes.FirstOrDefault(p => p.ProcessID == currentProcess);
process?.Attach();
Run Code Online (Sandbox Code Playgroud)
但似乎内部的id System.Diagnostics.Process.GetCurrentProcess().Id不存在LocalProcesses …
我在Excel工作表中有一列数据,其中包含正值和负值.我希望能够做的是应用条件格式(颜色渐变),从深绿色到浅绿色表示正值,浅红色表示深红色表示负值.
但是,我似乎无法做到这一点.如果我将条件格式从最大值应用到零,将零作为浅绿色,那么所有负值也将最终变为浅绿色.有没有一种方法,使一个条件格式仅适用达一定值,而不是超越?我可以类似地为负值制作条件格式,但同样会将正值着色为浅红色.如果我在同一张纸上都有,那么哪个优先级最高.
更新:虽然这真的很难看,但我决定试图找出哪些单元格大于0(或实际上是中点值,1.33在这种情况下为〜),哪些单元格较低,并将单元格引用明确设置为这些单元格.所以我尝试了这样的定义条件格式(正绿色标度):
<x:conditionalFormatting sqref="$E$5 $E$6 $E$10 $E$13 $E$15 $E$17 $E$18 $E$19 $E$22 $E$24 $E$25..." xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:cfRule type="colorScale" priority="1">
<x:colorScale>
<x:cfvo type="num" val="1.13330279612636" />
<x:cfvo type="num" val="1.91050388235334" />
<x:color rgb="d6F4d6" />
<x:color rgb="148621" />
</x:colorScale>
</x:cfRule>
</x:conditionalFormatting>
Run Code Online (Sandbox Code Playgroud)
就像这样(负红色刻度):
<x:conditionalFormatting sqref="$E$4 $E$7 $E$8 $E$9 $E$11 $E$12 $E$14 $E$16 $E$20 $E$21 $E$23 $E$26 $E$28 $E$29 $E$30..." xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:cfRule type="colorScale" priority="1">
<x:colorScale>
<x:cfvo type="num" val="0.356101709899376" />
<x:cfvo type="num" val="1.13330279612636" />
<x:color rgb="985354" />
<x:color rgb="f4dddd" />
</x:colorScale>
</x:cfRule> …Run Code Online (Sandbox Code Playgroud) 我有一个MVC视图应该是iFramed.它的几个实例可能是iFramed在同一个主页中.在我看来,我有这个:
@Html.AntiForgeryToken()
Run Code Online (Sandbox Code Playgroud)
我用来尝试确保调用web api只来自此页面.我的主机页面可能如下所示:
<iframe src="http://myserver.com/myview?someparameters=0000"></iframe>
<iframe src="http://myserver.com/myview?someparameters=0001"></iframe>
<iframe src="http://myserver.com/myview?someparameters=0002"></iframe>
Run Code Online (Sandbox Code Playgroud)
在我看来,我抓住令牌并在标题中提交它,以便我可以在我的API中检查它:
var headers = actionContext.Request.Headers;
var headerToken = headers.Contains("__RequestVerificationToken") ? headers.GetValues("__RequestVerificationToken").FirstOrDefault() : null;
var cookie = headers.GetCookies("__RequestVerificationToken").FirstOrDefault()?["__RequestVerificationToken"]?.Value;
AntiForgery.Validate(cookie,headerToken);
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,在我的主机页面中,所有三个视图都是并行加载的.因此,他们都在隐藏字段中获取自己的随机令牌并尝试设置cookie.但是,虽然可以有三个独立的独立隐藏输入令牌,但只能有一个cookie.因此,在三个请求中,两个将失败,一个将成功.重新加载页面将使所有三个都重新工作,大概是因为它们在这一点上都获得了相同的防伪标记(因为它属于会话 - 如果我理解正确的话).
那我怎么能避免这个呢?我怎样才能确保他们都获得相同的标记?
我正在以三种方式修改一段代码.在这3个条件中表现不同.请描述一下它是如何执行的?
var a=1;
function myFunc(){
console.log(a);
console.log(a)
}
myFunc();
//Output is:
1
1
var a=1;
function myFunc(){
console.log(a);
var a=2;
console.log(a)
}
myFunc();
//Output is:
undefined
2
var a=1;
function myFunc(){
console.log(a);
var a=2;
console.log(a)
}
myFunc(a);
//Output is:
undefined
2
Run Code Online (Sandbox Code Playgroud)
为什么在第二种情况下它的打印未定义?在第三种情况下,我发送我的全局a作为参数,然后它的打印未定义.
c# ×4
excel ×2
openxml ×2
asp.net-mvc ×1
camelcasing ×1
conditional ×1
cookies ×1
debugging ×1
formatting ×1
iframe ×1
iphone ×1
javascript ×1
json ×1
json.net ×1
mysql ×1
typescript ×1
vsix ×1
xamarin ×1
xcode ×1