我可以在类的静态构造函数中加水吗?
public class Connect:IDTExtensibility2, IDTCommandTarget
static Connect()
{
//hydrate static properties?
}
[Import]
public static Action<ProjectLogicChecks> Display { get; set; }
[Export(typeof(Action<ProjectLogicChecks>))]
private static void DisplayResults( CheckProcesses _checkResults)
{
MessageBox.Show(_checkResults.ProjectLogicCheck.AssemblyName + " has problems=" +
_checkResults.ProjectLogicCheck.HasProblems);
}
Run Code Online (Sandbox Code Playgroud) 我有一个简单的wcf服务契约,如果我使用接口的具体实现,它可以正常工作,但如果我想使用参数中的接口而不是具体类,它会给我错误,我将在下面显示.
这是代码:
[ServiceContract]
public interface IClientUserRegistration
{
[OperationContract]
void RegisterClientUser(ClientUser clientUser);
[OperationContract]
List<ClientUser> GetUsers();
}
Run Code Online (Sandbox Code Playgroud)
如果我用IClientUser替换ClientUser,WCF测试客户端会说不支持RegisterClientUser操作,因为它使用类型System.Object.如果我用Get替换GetUsers的返回值,它表示不支持此操作,因为它使用类型System.Object [].为什么会出现这些错误?
我之所以尝试使用IClientUser,是因为我可以实现实现IClientUser接口的不同用户类型并将它们传递给RegisterClient,但如果我只能传递ClientUser,那么我必须创建一堆RegisterClient覆盖,不同类型的用户.
这合法吗?它是否包含隐藏的错误或缺陷?Visual Studio不会给出任何错误或警告,但ReSharper会:
/// <summary>
/// immutable tuple for two
/// </summary>
public class Pair<TValue1, TValue2> : Singleton<TValue1>
{
public TValue2 Value2 { get; private set; }
public Pair(TValue1 value1, TValue2 value2, Func<Pair<TValue1, TValue2>, String> toStringFunc)
: this(value1, value2, () => toStringFunc(this)) { } //Red light
}2> : Singleton<TValue1>
Run Code Online (Sandbox Code Playgroud) 我正在尝试为数据库层编写单元测试,以验证连接字符串的用户是否具有更新/插入/读取权限.插入/回滚会在标识列或启动触发器中创建额外的间隙.对于读取权限,对表进行选择会在sql数据库上创建加载/工作,并在统计信息中最后一次搜索表时进行更新.如何以编程方式向sql server询问当前用户对对象/表/视图/存储过程/等的权限.
我想它在某个地方的系统表中.
我设计了以下测试:
var arrayLength=5000;
object[] objArray=new object[arrayLength];
for(var x=0;x<arrayLength;x++)
{
objArray[x]=new object();
}
objArray[4000]=null;
const int TestSize=int.MaxValue;
System.Diagnostics.Stopwatch v= new Stopwatch();
v.Start();
for(var x=0;x<10000;x++)
{
objArray.Contains(null);
}
v.Stop();
objArray.Contains(null).Dump();
v.Elapsed.ToString().Dump("Contains");
//Any ==
v.Reset();
v.Start();
for(var x=0;x<10000;x++)
{
objArray.Any(o=>o==null);
}
v.Stop();
objArray.Any(x=>x==null).Dump();
v.Elapsed.ToString().Dump("Any");
//Any Equals
v.Reset();
v.Start();
for(var x=0;x<10000;x++)
{
objArray.Any(obj=>object.Equals( obj,null));
}
v.Stop();
objArray.Any(obj=>object.Equals( obj,null)).Dump();
v.Elapsed.ToString().Dump("Any");
Run Code Online (Sandbox Code Playgroud)
null不存在时的结果:
Contains False 00:00:00.0606484Any == False 00:00:00.7532898Any object.Equals False 00:00:00.8431783当元素4000存在null时:
Contains True 00:00:00.0494515Any == True 00:00:00.5929247Any object.Equals True 00:00:00.6700742当元素10出现null时: …
自从工作流程构建出来以来,我一直在使用TFS构建.我从未见过使用以下任何一项的需要或愿望:

Copy Build output to the server
Private Drop Location我在高级银行自动化构建中使用它,我已经使用了tfs build,msbuild和cc.net.
它是设置/p:WebProjectOutputDir还是/p:DeployOnBuild=true不设置?这是诊断 - >查看日志选项始终显示为灰色的原因吗?
drop文件夹的目的是什么?
我希望满足编译器警告级别5.所以我在一个文件中有32个警告FS0052 已复制该值以确保此操作不会改变原始值
我已经关注了似乎与此警告相关的唯一SO帖子,但由于我的类型是由Microsoft生成的类型提供程序,因此我不能只是将字段标记为可变以安静警告.加上一些实际上不应该变异的可变东西看起来像是黑客而不是修复.
例子:
.GetValueOrDefault().ToString().toString()从正确的功能角度处理此警告的建议方法是什么?
我一直在为一些F#模块添加一些方便的方法,比如List.
type Microsoft.FSharp.Collections.FSharpList<'a> with //'
static member iterWhile (f:'a -> bool) (ls:'a list) =
let rec iterLoop f ls =
match ls with
| head :: tail -> if f head then iterLoop f tail
| _ -> ()
iterLoop f ls
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以添加突变?我知道List是不可变的,那么如何向Ref类型List添加一个可变方法.像这样的东西.
type Ref<'a when 'a :> Microsoft.FSharp.Collections.FSharpList<'a> > with //'
member this.AppendMutate element =
this := element :: !this
Run Code Online (Sandbox Code Playgroud)
或者是否有某种方法来约束泛型只接受一个可变的?
我想知道你如何将日期和时间从20100131022308.000000-360转换.
我一直试图弄清楚它一段时间,我似乎无法到达任何地方.
我在WPF应用程序中使用C#.
Mozilla 自己的规范说简单GET或POST应该是原生的 CORS 没有预检,但到目前为止POST我所做的每一次尝试都导致OPTIONS标题消失。当我更改它POST以获取代码时,会立即发送正确的GET请求,因此跨站点部分工作正常。
这是我在 Firefox 中所做的精简示例:
var destinationUrl = 'http://imaginarydevelopment.com/postURL';
var invocation = new XMLHttpRequest();
if (invocation) {
invocation.open('POST', destinationUrl, true);
//tried with and without this line
//invocation.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
invocation.onreadystatechange = (function Handler() {
if (invocation.readyState == 4)
alert('Request made');
});
invocation.send(/* tried with and without data*/);
}
Run Code Online (Sandbox Code Playgroud)
这是我已经在 chrome 和 IE 中工作的内容:
var destinationUrl = 'http://imaginarydevelopment.com/postURL';
var destination = { url: destinationUrl, type: 'POST', …Run Code Online (Sandbox Code Playgroud)