小编mon*_*001的帖子

为什么JSON字符串中的System.Version没有正确反序列化?

上下文:我需要传递一个包含大量属性/字段的对象(从中间层到UI层).在这个属性列表中,一个是Version类型,它没有从JSON字符串格式正确反序列化.我在XML上选择了JSON格式,因为字符串的JSON序列化将返回短字符串结果.

问题:System.Version没有正确反序列化.我尝试了两种不同的.NET库.以下是每个代码段:

使用ServiceStack .NET库的代码片段1 :

        var version = new Version(1, 2, 3, 0);
        string reportJSON = JsonSerializer.SerializeToString<Version>(version);
        //{"Major":1,"Minor":2,"Build":3,"Revision":0,"MajorRevision":0,"MinorRevision":0}


        Version report2 = JsonSerializer.DeserializeFromString<Version>(reportJSON);
        string reportJSON2 = JsonSerializer.SerializeToString<Version>(report2);
        //{"Major":0,"Minor":0,"Build":-1,"Revision":-1,"MajorRevision":-1,"MinorRevision":-1}
Run Code Online (Sandbox Code Playgroud)

Code Snippet 2使用Newtonsoft .NET库但结果相同:

        var version = new Version(1, 2, 3, 0);
        string reportJSON = JsonConvert.SerializeObject(version);
        //{"Major":1,"Minor":2,"Build":3,"Revision":0,"MajorRevision":0,"MinorRevision":0}


        Version report2 = JsonConvert.DeserializeObject<Version>(reportJSON);
        string reportJSON2 = JsonConvert.SerializeObject(report2);
        //{"Major":0,"Minor":0,"Build":-1,"Revision":-1,"MajorRevision":-1,"MinorRevision":-1}
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?或者哪个其他JSON.NET库可以正常工作?

c# json.net deserialization system.version

18
推荐指数
2
解决办法
5612
查看次数

停止在游戏过程中弹出通知栏

上下文: 我正在使用XNA 4.0框架开发Windows手机游戏.在游戏过程中,如果用户不小心拖动屏幕顶部,通知中心会被拖下来.

我看到很少有应用程序覆盖此行为,而不是弹出通知中心,顶部显示一个小提示,如下面的屏幕截图所示.

问题: 当用户在游戏过程中意外拖动屏幕顶部时,什么是阻止通知中心出现的API?

我想要实现的屏幕截图:

通知中心提示在顶部

同样的问题也在WP论坛上提出,但等待正确的解决方案.

xna windows-phone notificationcenter windows-phone-8.1

5
推荐指数
1
解决办法
239
查看次数

是通过子进程(由fork()创建)合法访问父进程的堆部分吗?

子进程是否可以访问(读取和写入)父进程的堆地址空间?以下是我在http://www.ideone.com/R5vDT上尝试的程序,该程序运行成功:

int main(){
        int *p = (int*)malloc(sizeof(int));
        if(fork()){
        //parent process
                *p = 25;//Write
                printf("Parent %d: %d %p\n", getpid(), *p, p);//Read
        }else{
        //child process
                *p = 15;//write
                printf("Child %d: %d %p\n", getpid(), *p, p);//read
        }
        return 0;
}     
Run Code Online (Sandbox Code Playgroud)

输出是:

Parent 30597: 25 0x9781008
Child 30600: 15 0x9781008
Run Code Online (Sandbox Code Playgroud)

我已经读过COW(写入时复制),但写入操作后,p指向的地址是相同的.操作系统是否应该引发异常,因为一个进程正在访问其地址空间之外的内存?

operating-system fork address-space

4
推荐指数
1
解决办法
1643
查看次数

访问模板类A中的X和Y,如模板<template <int X,int Y> class> class A;

在另一个模板类中使用模板类参数的模板参数的正确语法是什么?

例如:如何在类Foo中访问类Param的X和Y?

程序:

template < template < int, int > class X1>
struct Foo {
int foo() {
printf("ok%d %d\n", X1::X, X1::Y);
return 0;
}};

template < int X, int Y >
class Param {
int x,y;
public:
Param(){x=X; y=Y;}
void printParam(){
cout<<x<<" "<<y<<"\n";
}
};

int main() {
Param<10, 20> p;
p.printParam();
Foo< Param > tt;
tt.foo();
return 0;
}
Run Code Online (Sandbox Code Playgroud)

对于上面的代码,对于printf语句编译抱怨:

In member function 'int Foo<X1>::foo()':
Line 4: error: 'template<int <anonymous>, int <anonymous> > class X1' used without template …
Run Code Online (Sandbox Code Playgroud)

c++ templates

3
推荐指数
1
解决办法
297
查看次数

类型化基类引用其实际类型

我有一个Class BaseFilter和一些BaseFilter类的Derived类.

1. List<base> list = getFilters();
2. foreach(Base filter in list){
3.     var filterType = filter.GetType();
4.     var filter1 = filter as filterType;
5.     //DO SOME DERIVED CLASS OPERATION
6. }
Run Code Online (Sandbox Code Playgroud)

我在代码行3遇到错误.挑战是filter可以是任何派生类类型.有没有办法将过滤器对象强制转换为它的实际派生类?

我收到以下错误:无法找到类型或命名空间名称'filterType'(您是否缺少using指令或程序集引用?)

应该采用哪种正确方法?

c# polymorphism casting

2
推荐指数
1
解决办法
808
查看次数