【问题标题】:Setting and Getting SignalR Caller properties in vb.net在 vb.net 中设置和获取 SignalR 调用者属性
【发布时间】:2012-08-29 01:26:02
【问题描述】:

SignalR Chat sample中,调用者属性是使用代码设置的;

Caller.name = newUser.Name;

然后稍后,这个属性被读取;

string name = Caller.name;

我有自己的 SignalR 项目,但是这个是 vb.net,当我对调用者属性进行相同的设置和获取时,它不起作用

Public Sub SetCaller()
    Caller.name = "tim"
End Sub

Public Sub GetCaller()
    Dim name as string = Caller.name
End Sub

GetCaller() 抛出“从类型 'Task(Of Object)' 类型转换为类型 'String' 无效。”

完全相同的代码,但在 c# 中可以正常工作;

public void SetCaller(){
    Caller.name = "tim";
}

public void GetCaller(){
    string name = Caller.name;
}

我的代码在 vb.net 中有错误吗?

【问题讨论】:

    标签: c# asp.net vb.net signalr


    【解决方案1】:

    不,您在 VB.NET 的语法上没有做错任何事情。我唯一能想到的就是使用 IDE 检查 Caller 是什么类型以及 Caller.name。在 VB.NET 中,它不区分大小写,并且许多命名空间可能会自动导入,而无需您在文件顶部特别列出它们,因此在 VB 中,它很可能使用与您预期不同的类型。

    【讨论】:

    • 调用者在 vb.net 和 c# 中都是 SignalR.Hubs.StatefulSignalAgent
    • 那么name属性的类型是什么?
    • 我无法访问它,因为它是一个动态对象?
    • 这很有趣。因此,当您在 C# 中将 name 属性设置为字符串时,会使用字符串类型创建动态属性,但是当您在 VB.NET 中执行相同操作时,会使用 Type(Of Object) 类型创建动态属性?我对动态的东西不是很熟悉,所以很遗憾我无法为您提供进一步的帮助。
    • 我建议尝试将问题减少到尽可能少的代码。以与 StatefulSignalAgent 相同的方式创建您自己的具有动态属性的类。然后以更一般的方式重新发布您的问题,为什么这个动态对象不能以某种方式正常工作。我怀疑如果你这样做,并且你展示了重现问题所需的所有代码,你就会得到答案。了解动态对象(我不包括在内)的人可能比熟悉 SignalR 库的人多得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    相关资源
    最近更新 更多