小编acc*_*777的帖子

ASP.NET Core 2 SignalR Hub 接收复杂对象而不是字符串

我目前正在使用 SignalR Core 开发 ASP.NET Core 2 应用程序。我想知道是否可以在 Hub 类中接收复杂的对象,而不是简单的字符串或简单的数据结构。

有效 - 这个例子工作正常:string message

public class MyHub : Hub
{
    public Task SendMessage(string message)
    {
        // ... some logic
    }
}
Run Code Online (Sandbox Code Playgroud)

有效 - 这个例子也很好用:List<Dictionary<string, object>> message

public class MyHub : Hub
{
    public Task SendMessage(List<Dictionary<string, object>> message)
    {
        // ... some logic
    }
}
Run Code Online (Sandbox Code Playgroud)

无法正常工作 - 似乎我无法通过 SignalR 传输复杂对象,例如,如果我创建自定义消息类:

public class Message 
{
   public int MessageId { get; set; }

   public List<Dictionary<string, object>> Items { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# signalr asp.net-core

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

正确地将 C++ long 转换为 C# int

我目前正在使用用非托管 C++ 编写的业务逻辑库开发 .NET Framework 4.7.2 应用程序。我需要使用非托管 C++

我需要使用 C++ 项目中的逻辑,不幸的是我无法正确转换程序的输入或输出参数。

当我输入 42,并且只想返回该值时,我得到的结果是 17582022。实际上应该是 42。

我的 C++ 代码如下所示:

MYCore 头文件:

#ifdef MYCORE_EXPORTS
#define MYCORE_API __declspec(dllexport)
#endif

#pragma once
#include <string>

using namespace std;

extern "C"
{
    class MYCORE_API TestClass
    {
    private:
        string name;
    public:
        TestClass(char*);
        long Iterate(long &n);
    };

    MYCORE_API TestClass* TestClass_Create(char* name);
}
Run Code Online (Sandbox Code Playgroud)

MYCore源文件:

#include "stdafx.h"

#include "MYCore.h"

TestClass::TestClass(char* n) 
{
    name = n;
}

long TestClass::Iterate(long &n) 
{
    return n;
}

extern "C"
{
    MYCORE_API TestClass …
Run Code Online (Sandbox Code Playgroud)

.net c# c++

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

将数据类型从 C# 编组到 C++ 的类型转换问题

我目前正在开发一个 C# (.NET Framework 4.7.2) 应用程序,使用非托管 C++ 库中的一些业务逻辑。我尝试在 C# 和 C++ 之间来回传递数据(互操作)。我可能不会使用 C++/CLI,我的项目中不允许使用公共语言运行时。

对于 int 来说效果很好。不幸的是,一旦我尝试发送另一种数据类型,我就会收到转换错误,例如float 4.2f 变为 1,字符串"fourtytwo" 变为 -1529101360

我的 C# 代码如下所示:

// works fine, creates an instance of TestClass    
var test = TestProxy.Wrapper_Create("test"); 

// int, works fine, a = 42
var a = TestProxy.TryInt(test, 42);

// float, problem, b = 1
var b = TestProxy.TryFloat(test, 4.2f);

// string, problem, c = -159101360
var c = TestProxy.TryString(test, "fourtytwo");
Run Code Online (Sandbox Code Playgroud)

我的 C# Interop 代理类调用本机(非托管)C++ 代码如下所示: …

c# c++ marshalling

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

使用类型检查C#更好的If语句

我目前正在开发.NET 4.7.1应用程序。我有一个If语句来检查数据类型并相应地调用处理程序方法。

我当前的If语句如下所示:

// object msg = MyHelper.Deserialize(xmlString);

if (msg is Tomato) Handle_Tomato((Tomato)msg);
if (msg is Apple) Handle_Apple((Apple)msg);
if (msg is Banana) Handle_Banana((Banana)msg);
if (msg is Orange) Handle_Orange((Orange)msg);
Run Code Online (Sandbox Code Playgroud)

味精基本上是从字符串反序列化的对象。

我想知道,是否有更好的方式编写if语句?

非常感谢你!

.net c# if-statement

4
推荐指数
2
解决办法
130
查看次数

标签 统计

c# ×4

.net ×2

c++ ×2

asp.net-core ×1

if-statement ×1

marshalling ×1

signalr ×1