小编typ*_*oid的帖子

SignalR 2.0更改Json Serializer以支持派生类型对象

请注意,我在这里明确地引用了SignalR 2.0 ...我已经看到了一些(讨厌的)方法用于SignalR 1.1/1.2 ......但是还没有用于2.0.

有没有人在更改SignalR 2.0默认的json序列化程序以启用派生类型的发送方面有任何成功?根据我读到的有关SignalR 2.0的内容,这应该是可能的,但是,我没有运气,也没有在任何地方找到完整的例子.

这是我开始的方式...任何帮助将不胜感激.

我的Startup.cs

    [assembly: OwinStartup(typeof(SignalRChat.Startup))]
    namespace SignalRChat
    {

        public class Startup
        {
            public void Configuration(IAppBuilder app)
            {
                // this should allow the json serializer to maintain the object structures
                var serializer = new JsonSerializer()
                {
                    PreserveReferencesHandling = PreserveReferencesHandling.Objects,
                    TypeNameHandling = TypeNameHandling.Objects,
                    TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
                };

                // register it so that signalr can pick it up
                GlobalHost.DependencyResolver.Register(typeof(JsonSerializer), () => serializer);

                app.MapSignalR();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

Hub上的方法

    public void AddStock(Stock stock)
    {
        string stockType = stock.GetType().ToString(); …
Run Code Online (Sandbox Code Playgroud)

c# jsonserializer derived-types signalr

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

C# 中字符串的结构映射问题

我正在尝试将(相当古老的)C++ 字符串消息映射到 C# 结构中,以便在某些新软件中进行处理。我遇到的问题是,当将 C++ 字符串消息映射到 C# 结构时,我丢失了字符(大概是添加了 \0)。

我需要处理的消息数据如下所示:“91000222201”

Where:  "91" is one value
        "0002" is the next value
        "222" is the third value
        "01" is the final value
Run Code Online (Sandbox Code Playgroud)

我尝试的第一个结构布局是这样的:

[StructLayout(LayoutKind.Sequential, Size = 11, CharSet = CharSet.Ansi), Serializable]
public struct HeaderPacketStruct
{
    [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 2)]
    public string Value1;
    [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 4)]
    public string Value2;
    [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 3)]
    public string Value3;
    [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 2)]
    public string Value4;
}
Run Code Online (Sandbox Code Playgroud)

它处理了字符串...但产生了以下值:

HeaderPacketStruct.Value1 = "9"
HeaderPacketStruct.Value1 = "000"
HeaderPacketStruct.Value1 …
Run Code Online (Sandbox Code Playgroud)

c# string struct structure marshalling

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