Tag: C#的

JSON.Net:强制所有私有字段和子类中的所有字段的序列化

我有一个类与几个不同的类,我把这些类的信息发送到客户端,但我不想全部发送出去,所以有些是私人的,一些有[JsonObject(MemberSerialization.OptIn)]标志等。 但是,现在我想要做所有这些对象的备份,当我需要closures服务器和每12小时(我不想使用数据库),所以我想要做的(如果可能的话)是强制JSON .Net Serializer来转换对象和属于该对象的所有对象。 例如: class Foo { public int Number; private string name; private PrivateObject po = new PrivateObject(); public string ToJSON() { /* Serialize my public field, my property and the object PrivateObject */ } } 我试过这个代码(尽pipe它已经过时了),但是它没有序列化与我的对象相关的对象: Newtonsoft.Json.JsonSerializerSettings jss = new Newtonsoft.Json.JsonSerializerSettings(); Newtonsoft.Json.Serialization.DefaultContractResolver dcr = new Newtonsoft.Json.Serialization.DefaultContractResolver(); dcr.DefaultMembersSearchFlags |= System.Reflection.BindingFlags.NonPublic; jss.ContractResolver = dcr; […]

在OpenCV中有效地将大的Mat加载到内存中

有没有比OpenCV中的FileStorage方法更有效的方法来加载一个大型的Mat对象? 我有一个大的垫子,192列,100万行,我想本地存储在一个文件,并加载到内存然后我的应用程序启动。 使用FileStorage没有问题,但我想知道是否存在一个更有效的方法来做到这一点。 目前,使用Visual Studio中的debugging模式将Mat放入内存大约需要5分钟,在Release模式下大约需要3分钟,数据文件大小约为1.2GB。 FileStorage方法是唯一可用于执行此任务的方法吗?

为什么我不能在C中将'char **'转换为'const char * const *'?

下面的代码片段(正确)给出了C中的警告和C ++中的错误(分别使用gcc&g ++,在版本3.4.5和4.2.1中testing; MSVC似乎不在乎): char **a; const char** b = a; 我可以理解并接受这一点。 这个问题的C ++解决scheme是将b改为const char * const *,它不允许重新分配指针,并且阻止你规避const正确性( C ++ FAQ )。 char **a; const char* const* b = a; 但是,在纯C中,修正后的版本(使用const char * const *)仍然会给出警告,我不明白为什么。 有没有办法解决这个问题,而不使用一个演员? 澄清: 1)为什么这会在C中产生警告? 它应该完全是常量安全的,C ++编译器似乎也是这样认识的。 2)接受这个char **作为参数的正确方法是什么?在说(并且让编译器强制执行)的时候我不会修改它指向的字符? 例如,如果我想写一个函数: void f(const char* const* in) { // Only reads the data from […]

数组是指针?

可能重复: 数组名是C中的一个指针吗? 数组和指针的实现是不同的? 我遇到过这个问题,因为在这两种情况下,我们都是从一个元素的起始地址访问元素的,所以它们之间应该有密切的关系。 请解释他们之间的确切关系。 谢谢。

全局鼠标事件处理程序

我有我从某处捕捉鼠标事件的以下代码。 我修改了它,并创build了一个事件处理程序,以便我可以订阅它。 鼠标事件被正确捕获。 但它永远不会触发事件处理程序。 任何人都可以弄清楚代码有什么问题吗? public static class MouseHook { public static event EventHandler MouseAction = delegate { }; public static void Start() { _hookID = SetHook(_proc); } public static void stop() { UnhookWindowsHookEx(_hookID); } private static LowLevelMouseProc _proc = HookCallback; private static IntPtr _hookID = IntPtr.Zero; private static IntPtr SetHook(LowLevelMouseProc proc) { using (Process […]

如何将Unicode转义序列转换为.NETstring中的Unicode字符?

假设你已经将一个文本文件加载到一个string中,并且你希望将所有Unicode转义符转换成string内的实际Unicode字符。 例: “以下是Unicode'u2320'中整数字符的上半部分,这是下半部分'\ U2321'。”

获取带有url编码斜线的url

我想发送一个HTTP GET到http://example.com/%2F 。 我的第一个猜测会是这样的: using (WebClient webClient = new WebClient()) { webClient.DownloadData("http://example.com/%2F"); } 不幸的是,我可以看到实际上发送的是什么: GET // HTTP/1.1 Host: example.com Connection: Keep-Alive 所以http://example.com/%2F在传送之前会被翻译成http://example.com// 。 有没有办法实际发送这个GET请求? OCSP协议要求在通过HTTP / GET使用OCSP时发送base-64编码的url编码,所以有必要发送一个实际的%2F而不是'/'来符合。 编辑: 以下是OCSP协议标准( RFC 2560附录A.1.1)的相关部分: 使用GET方法的OCSP请求构造如下: GET {url} / {OCSPRequest的DER编码的base-64编码的url编码} 我对这个问题的其他解读非常开放,但我看不出还有什么意思。

在C#中比较数组

我正试图比较两个arrays彼此。 我试过这个代码,并得到以下错误。 static bool ArraysEqual(Array a1, Array a2) { if (a1 == a2) return true; if (a1 == null || a2 == null) return false; if (a1.Length != a2.Length) return false; IList list1 = a1, list2 = a2; //error CS0305: Using the generic type 'System.Collections.Generic.IList<T>' requires '1' type arguments for (int i = 0; i […]

如何在无序容器中为用户定义的types专门化std :: hash <Key> :: operator()?

为了支持std::unordered_set<Key>和std::unordered_map<Key, Value>用户定义的键types,必须提供operator==(Key, Key)和一个哈希仿函数: struct X { int id; /* … */ }; bool operator==(X a, X b) { return a.id == b.id; } struct MyHash { size_t operator()(const X& x) const { return std::hash<int>()(x.id); } }; std::unordered_set<X, MyHash> s; 用std::unordered_set<X>写一个types为X的默认散列会更方便,就像编译器和库一样。 经过咨询 C ++标准草案N3242§20.8.12 [unord.hash]和§17.6.3.4[hash.requirements], Boost.Unordered g ++ include\c++\4.7.0\bits\functional_hash.h VC10 include\xfunctional 堆栈溢出中的各种相关问题 似乎有可能专门化std::hash<X>::operator() : namespace std […]

如何从Json序列化中排除属性

我有一个DTO课,我串行化 Json.Serialize(MyClass) 我怎样才能排除它的公共财产? (它必须是公开的,因为我在其他地方的代码中使用它)