我正在寻找更通用/"标准"的方式来从一组对字符串,对象实例化某种类型T的对象.对我来说,看起来应该有一些众所周知的方法,但我找不到它,所以我想出了这段代码.有人知道更好的事吗?
// usage
public class test
{
public int field1;
public string field2;
public bool field3;
public string[] field4;
public IDictionary<string,object> field5 { get; set; }
public static IDictionary<string,object> dynamic()
{
return new Dictionary<string,object>{
{ "field1", 2 },
{ "field2", "string" },
{ "field3", true },
{ "field4", new[] { "id3", "id4", "id5" } },
{ "field5", new Dictionary<string,object>{ { "id1", "" } } }
};
}
}
...
var r = new dynamic_data_serializer<test>().create( test.dynamic() );
...
//
public class …Run Code Online (Sandbox Code Playgroud) 我正在尝试从位于Windows Server 2003 SP2 x86上的完整转储内存文件中转储堆信息.转储是为在Windows Server 2003 SP2 x64计算机上运行的32位混合(本机/ clr)应用程序创建的.
从以下windbg日志中我了解到加载的ntdll.dll映像不正确,并且与ntdll.pdb符号不对应.我试图从目标机器指定ntdll.dll的位置,但windbg仍显示模块是从标准位置(c:\ windows\system32)加载的.
我做错了什么?如何强制windbg加载正确的版本ntdll?
Microsoft (R) Windows Debugger Version 6.11.0001.404 X86
Copyright (c) Microsoft Corporation. All rights reserved.
[ ... skipped ... ]
0:042> vertarget
Windows Server 2003 Version 3790 (Service Pack 2) MP (4 procs) Free x86 compatible
Product: Server, suite: TerminalServer SingleUserTS
kernel32.dll version: 5.2.3790.4480 (srv03_sp2_gdr.090321-1244)
Machine Name:
Debug session time: Wed Mar 16 16:36:10.000 2011 (GMT-5)
System Uptime: 17 days 10:34:26.068
Process Uptime: 1 days 15:19:14.000 …Run Code Online (Sandbox Code Playgroud) 我正在编写一个小型实用程序(VC 2010,无 clr),它使用第 3 方库执行一项简单的任务(光栅化)。稍后的实用程序将被更大的应用程序使用。有时,该实用程序会因第 3 方库中的某些堆损坏而崩溃。没关系,但 Windows (Vista/2008) 显示众所周知的对话框“程序已停止工作...关闭/调试程序”。这不适合我的情况(服务器端)。实用程序应该静默地崩溃/终止,没有任何可见的影响。
为此,我为未处理的异常安装了 SEH (SetUnhandledExceptionFilter)。对于 AV ( *(PDWORD)0 = 0 ) 等异常,可以完美调用该处理程序,但由于某种原因,在堆损坏的情况下不会调用该处理程序。卸载第 3 方库 dll 之一的 dllmain 时发生损坏。
有几个问题。谁能解释为什么不调用处理程序?还有其他方法可以阻止该对话框吗?
在C++/CLI代码中,我需要检查类型是否是特定的泛型类型.在C#中它将是:
public static class type_helper {
public static bool is_dict( Type t ) {
return t.IsGenericType
&& t.GetGenericTypeDefinition() == typeof(IDictionary<,>);
}
}
Run Code Online (Sandbox Code Playgroud)
但是在cpp ++\cli中它的工作方式不同,编译器会显示语法错误:
class type_helper {
public:
static bool is_dict( Type^ t ) {
return t->IsGenericType && t->GetGenericTypeDefinition()
== System::Collections::Generic::IDictionary<,>::typeid;
}
};
Run Code Online (Sandbox Code Playgroud)
我找到的最好方法是比较这样的字符串:
class type_helper {
public:
static bool is_dict( Type^ t ) {
return t->IsGenericType
&& t->GetGenericTypeDefinition()->Name == "IDictionary`2";
}
};
Run Code Online (Sandbox Code Playgroud)
有人知道更好的方法吗?
PS:c ++\cli中的typeof(typeid)是否有限制,或者我不知道"正确"的systax?
我不明白重复微软的设计是什么意思.我的经验表明,WCF是一个庞大的框架,其实现基于SOAP服务.他们的方法存在很多问题.它简直不适合简单的HTTP请求处理周期.为什么不试着发明一个更好的框架呢?
更新:
好的我明白了.:)我喜欢.NET平台,C#和我喜欢这个平台可以在另一个操作系统上使用,但是......
难道你们不是看到原始(微软)框架中的许多东西可以做得更好吗?看看System.ServiceModel.Channels.Message.这是定制景观的重要内容之一.
为什么我到处都看到XML?我怎样才能轻松地对这样的课程做任何事情?这是可行的,但我不能说这是一个通用通信框架的好设计.我认为Mono项目的目的不仅仅是将.NET生态系统带入unix*,而是让它变得更好.