我有一个具有默认构造函数的类,也是一个带有一组参数的重载构造函数.这些参数与对象上的字段匹配,并在构造时分配.此时我需要默认构造函数用于其他目的,所以我想保留它,如果可以的话.
我的问题:如果我删除默认构造函数并传入JSON字符串,该对象将正确反序列化并传入构造函数参数而不会出现任何问题.我最终以我期望的方式取回填充的对象.但是,只要我将默认构造函数添加到对象中,当我调用JsonConvert.DeserializeObject<Result>(jsontext)属性时就不再填充了.
此时我尝试添加new JsonSerializerSettings(){CheckAdditionalContent = true}反序列化调用.那什么都没做.
另一个说明.除了参数以小写字母开头之外,构造函数参数确实与字段的名称完全匹配.我不认为这很重要因为,就像我提到的,反序列化工作正常,没有默认构造函数.
这是我的构造函数的示例:
public Result() { }
public Result(int? code, string format, Dictionary<string, string> details = null)
{
Code = code ?? ERROR_CODE;
Format = format;
if (details == null)
Details = new Dictionary<string, string>();
else
Details = details;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用MS Build为两个Web应用程序进行Web部署发布,以供内部使用和测试.我为每个要发布的环境设置了不同的解决方案配置.IE DevA,DevB.我已经更新了所有web.configs来进行正确的转换.作为一个注释,当我通过Visual Studio进行右键单击发布时,转换工作,所以我已经将这些作为问题排除.我正在运行的当前bat文件使用此命令来完成工作:
"C:\ Program Files(x86)\ MSBuild\12.0\Bin\msbuild"project.csproj/t:Clean; Rebuild; Publish/p:DeployOnBuild = true; PublishProfile = DevB1_API; AllowUntrustedCertificate = True; username = username; password =密码
当我运行此命令时,发布工作正常.但是,web.config没有被转换.我错过了一个msbuild参数来强制这种情况发生吗?任何帮助,将不胜感激!谢谢.
根据我遇到的所有文档,我应该可以在我的连接启动后调用$ .connection.hub.id.这是我的代码:
var handshake = $.connection.handshakeHub;
$.connection.hub.start().done(function () {
console.dir($.connection.hub);
console.log('connection started with id: ' + $.connection.hub.id);
self.parentConnectionId = document.cookie.replace(/(?:(?:^|.*;\s*)connection\s*\=\s*([^;]*).*$)|^.*$/, "$1");
handshake.server.connect(self.parentConnectionId, $.connection.hub.id);
});
Run Code Online (Sandbox Code Playgroud)
我成功连接,握手代理连接呼叫命中服务器,因此它不像连接是轰炸.我还在连接后检查了dev工具中的属性,ID仍未定义.
我已经尝试使用Signalr的2.1和2.2版,但没有运气.有人对此有经验吗?这是杀了我.