问题列表 - 第45328页

DataContract序列化异常(不期望数据协定名称)

我有以下代码:

[DataContract]
class TestContract {
    private String _Name;
    private Int32 _Age;

    [DataMember( Name = "Name" )]
    public String Name {
        get { return _Name; }
        set { _Name = value; }
    }

    [DataMember( Name = "Age" )]
    public Int32 Age {
        get { return _Age; }
        set { _Age = value; }
    }
}

[Serializable]
public class DNCJsonDictionary<K, V> : ISerializable {
    Dictionary<K, V> dict = new Dictionary<K, V>();

    public DNCJsonDictionary() { }

    protected DNCJsonDictionary( SerializationInfo info, StreamingContext context ) …
Run Code Online (Sandbox Code Playgroud)

c# reflection serialization datacontract

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

将JSON数据从JQuery发送到WCF REST方法时出现问题

我在使用jquery将一些json数据发布到我在WCF服务上的rest方法时遇到了一些麻烦.

在WCF方面,这是操作合同:

[OperationContract]
[WebInvoke(Method = "POST",
           BodyStyle = WebMessageBodyStyle.Bare,
           RequestFormat = WebMessageFormat.Json,
           ResponseFormat = WebMessageFormat.Json,
           UriTemplate = "PostSomething")]
MyResult PostSomething(MyRequest request);
Run Code Online (Sandbox Code Playgroud)

双方MyResultMyRequest标有所有必要DataContractDataMember属性和服务暴露WebHttp端点.

在JQuery方面,这是我的函数调用:

var jsonStr = JSON.stringify(reqObj);

$.ajax({
    type: "POST",
    dataType: "json",
    url: "http://localhost/MyService/PostSomething",
    contentType: "application/json; charset=utf-8",
    data: jsonStr,
    success: function (html) {
        alert(html);
    }
});
Run Code Online (Sandbox Code Playgroud)

这个请求永远不会到达我的方法(我每次都得到一个405方法不允许),并查看Charles的请求如下所示:

OPTIONS /MyService/PostSomething HTTP/1.1
Host: localhost
Cache-Control: max-age=0
Access-Control-Request-Method: POST
Origin: null
Access-Control-Request-Headers: Content-Type, Accept
Accept: */*
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 …
Run Code Online (Sandbox Code Playgroud)

rest wcf jquery http-options-method

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

两个不同的TThread后代如何共享一个OnTerminate处理程序?

我有一个应用程序启动一些线程来做东西.我有一个TThreadOnTerminate程序,每个线程访问一些线程变量,用结果填充网格.(每个线程执行不同的任务,但答案总是相同的,即成功或失败StringList的消息.)

所以我有:

procedure TFormMain.Thread1OnTerminate(Sender: TObject);
begin
  Result := TThread1(Sender).Result;
  AddMessagesToGrid(TThread1(Sender).Messages);
end;

procedure TFormMain.Thread2OnTerminate(Sender: TObject);
begin
  Result := TThread2(Sender).Result;
  AddMessagesToGrid(TThread2(Sender).Messages);
end;
Run Code Online (Sandbox Code Playgroud)

我的问题如下.我可以有一个'通用' OnTerminate程序来处理我所有线程的结果,如下所示?

procedure TFormMain.Thread1OnTerminate(Sender: TObject);
begin
  Result := <Sender Thread>.Result;
  AddMessagesToGrid(<Sender Thread>.Messages);
end;
Run Code Online (Sandbox Code Playgroud)

我们目前正在使用Delphi 2007.很快就升级(我希望)到Delphi XE.

delphi multithreading

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

VB6是否支持无符号数据类型?

为了与我的一位同事结算赌注,我想知道VB6本身是否支持任何未签名的数据类型.

我认为答案是"不",但我似乎无法找到任何证实这一点的官方文件.一个简单的链接到Microsoft文档将是一个可接受的答案; 关于为什么不支持这些类型的历史理由将是一个额外的奖励.

vb6 unsigned

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

Textblock Style dataTrigger在ItemsControl中不起作用

我有一个ObservableCollection<Object1>类型(Messages在下面的代码中)绑定到一个ItemsControl.Object1有两个属性即ErrMsgIsError.ErrMsg如果是错误(即如果IsError是),我想显示红色,否则显示黑色.

<ItemsControl
    Height="Auto"
    Background="White"
    ItemsSource="{Binding Messages}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock
                    Margin="5,0,0,0"
                    Text="{Binding ErrMsg}"
                    Width="Auto"
                    Foreground="Black">
                    <TextBlock.Style>  
                        <Style TargetType="{x:Type TextBlock}">       
                            <Style.Triggers>         
                                <DataTrigger
                                    Binding="{Binding IsError}"
                                    Value="true">      
                                    <Setter
                                        Property="TextBlock.Foreground"
                                        Value="Red" />         
                                </DataTrigger>       
                            </Style.Triggers>     
                        </Style>   
                    </TextBlock.Style> 
                </TextBlock>
            </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)

问题是所有的消息总是以黑色显示而不管IsError价值如何?

我怎样才能做到这一点?

.net wpf styles datatrigger itemscontrol

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

设备方向改变时黑屏

我正在 android 2.2 中开发一个应用程序。

当更改设备方向(通过旋转设备)时,我的 Activity 边界会绘制一个黑屏(甚至没有 Activity 标题),这需要几秒钟(7-15 秒),然后最终绘制 Activity。

我已经测试了它模拟器和两个不同的设备,行为是相同的。

在 LogCat 我有下一个输出:

02-02 09:18:06.044: WARN/WindowManager(1300): MyActivity freeze timeout expired.

02-02 09:18:06.044: WARN/WindowManager(1300): Force clearing freeze: AppWindowToken{4515af88 token=HistoryRecord{44f52458 com.project.package/.MyActivity}}

02-02 09:18:08.054: WARN/WindowManager(1300): Window freeze timeout expired.

02-02 09:18:08.054: WARN/SurfaceFlinger(1300): timeout expired mFreezeDisplay=1, mFreezeCount=0

02-02 09:18:08.054: WARN/WindowManager(1300): Force clearing orientation change: Window{45178a00 com.project.package/com.project.package.Activity paused=false}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会这样。感谢您的评论,建议,答案。

android

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

手势方法(Pan Gesture和Swipe Gesture)之间是否有任何优先条件?

我正在开发一个应用程序,我使用了Pan Gesture以及Swipe Gesture.因此,每次我执行Swipe Gesture时,Pan手势中的方法总是被调用,并且Swipe Gesture方法不会被调用.

所有的手势方法之间有没有优先权?

iphone uigesturerecognizer ios uiswipegesturerecognizer uipangesturerecognizer

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

使交换更快,更易于使用和异常安全

我昨晚无法入睡,开始思考std::swap.这是熟悉的C++ 98版本:

template <typename T>
void swap(T& a, T& b)
{
    T c(a);
    a = b;
    b = c;
}
Run Code Online (Sandbox Code Playgroud)

如果用户定义的类Foo使用外部资源,则效率低下.常用的习语是提供一种方法void Foo::swap(Foo& other)和一种专业化std::swap<Foo>.请注意,这不适用于类模板,因为您不能部分地专门化函数模板,并且重std命名命名空间中的名称是非法的.解决方案是在一个人自己的命名空间中编写模板函数,并依赖于参数依赖查找来查找它.这主要取决于客户端遵循" using std::swap成语"而不是std::swap直接调用.非常脆弱.

在C++ 0x中,如果Foo有一个用户定义的移动构造函数和一个移动赋值运算符,提供一个自定义swap方法和一个特化std::swap<Foo>几乎没有性能优势,因为C++ 0x版本std::swap使用高效的移动而不是副本:

#include <utility>

template <typename T>
void swap(T& a, T& b)
{
    T c(std::move(a));
    a = std::move(b);
    b = std::move(c);
}
Run Code Online (Sandbox Code Playgroud)

不必再捣乱swap已经从程序员那里承担了很多负担.当前的编译器不会自动生成移动构造函数和移动赋值运算符,但据我所知,这将改变.剩下的唯一问题是异常安全,因为一般来说,允许移动操作,这会打开一大堆蠕虫.问题是"移动对象的状态究竟是什么?" 使事情进一步复杂化.

然后我在想,std::swap如果一切顺利的话,C++ 0x 中的语义究竟是什么?交换之前和之后的对象状态是什么?通常,通过移动操作进行交换不会触及外部资源,只会触及"平面"对象表示本身. …

c++ swap move-semantics c++11

14
推荐指数
4
解决办法
2325
查看次数

扭曲:创建一个ThreadPool然后守护进程导致无法提供信息的挂起

我正在开发一个Twisted网络应用程序,其中一部分由一个用Django编写的Web界面组成.

我希望使用Twisted的WSGI服务器来托管Web界面,并且我已经编写了一个工作"tap"插件来允许我使用twistd.

当使用-n标志运行服务器时(不要守护进程)一切正常,但是当删除此标志时,服务器根本不响应请求,并且没有记录消息(尽管服务器仍在运行).

Twisted的Trac上有一个错误,似乎完全描述了问题,我的插件恰好是基于票证中引用代码.

不幸的是,这个问题还没有解决 - 而且它是在一年前提出的.

我试图创建一个ThreadPoolService类,它在被调用时扩展Service并启动给定:ThreadPoolstartService

class ThreadPoolService(service.Service):
    def __init__(self, pool):
        self.pool = pool

    def startService(self):
        super(ThreadPoolService, self).startService()
        self.pool.start()

    def stopService(self):
        super(ThreadPoolService, self).stopService()
        self.pool.stop()
Run Code Online (Sandbox Code Playgroud)

但是,Twisted似乎根本没有调用该startService方法.我认为问题在于,使用"tap"插件,ServiceMaker只能返回一个要启动的服务 - 并且属于同一应用程序的任何其他服务都不会启动.显然,我正在返回一个TCPServer包含WSGI根的服务.

在这一点上,我有点像砖墙.有没有人对如何解决这个问题有任何想法?

python django wsgi twisted threadpool

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

附加列表 - 分段错误

我试图将一个列表附加到另一个列表中.如果我传递两个列表的指针指针并只显示它们,那么代码工作正常.但是如果我使用代码到达第一个列表的NULL指针,然后将它等同于第二个列表中的第一个,那么它会给出一个分段错误.请让我知道错误是什么.代码如下:

#include<stdio.h>
#include<stdlib.h>
struct node 
{
    int data;
    struct node* next;
}*Head,*New;
void display(struct node **p)
{
    struct node *curptr;
    curptr=*p;
    if(curptr==NULL)
        printf("list is empty");
    else
    {
        while(curptr)
        {
            printf("->%d",curptr->data);
            curptr=curptr->next;
        }
    }
}
void combine(struct node **a,struct node **b)
{
    //display(&(*a));
    struct node *aptr;
    aptr=*a;
    while(aptr)
        aptr=aptr->next;
    aptr->next=*b;
    *b=NULL;
    display(&(*a));

    //display(&(*a));
    //display(&(*b));   

}
void main()
{
    Head=NULL;
    New=NULL;
    int choice;
    while(1)
    {
          case 9:
        {
            printf("Combining two lists");
            combine(&Head,&New);
            break;
        }
Run Code Online (Sandbox Code Playgroud)

c linked-list segmentation-fault

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