Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#for Dictionary中使用委托<;int,List<;字符串>&燃气轮机;_C#_List_Dictionary_Delegates_Invoke - Fatal编程技术网

如何在C#for Dictionary中使用委托<;int,List<;字符串>&燃气轮机;

如何在C#for Dictionary中使用委托<;int,List<;字符串>&燃气轮机;,c#,list,dictionary,delegates,invoke,C#,List,Dictionary,Delegates,Invoke,守则: [1] [4] 如何将类型分别为ReceiveMessageAction的两个变量Dictionary发送到receivesmessagestatus方法 谢谢 我有一个在线程中执行的函数。在这里,我创建了一个类型为Dictionary的对象,并使用一个委托,我不想在我的表单中使用这个对象 代码的一部分如上所述: [1] 减少委托的费用 [2] 对象 [3] 代表的号召 [3] 需要发送对象的函数您是否尝试将值转换为字典?e、 g private void ReceiveMessage

守则:

[1]

[4]

如何将类型分别为
ReceiveMessageAction
的两个变量
Dictionary
发送到
receivesmessagestatus
方法

谢谢


我有一个在线程中执行的函数。在这里,我创建了一个类型为
Dictionary
的对象,并使用一个委托,我不想在我的表单中使用这个对象

代码的一部分如上所述: [1] 减少委托的费用 [2] 对象 [3] 代表的号召
[3] 需要发送对象的函数

您是否尝试将值转换为字典?e、 g

private void ReceiveMessagesStatus(ReceieveMessageAction action, object value)
{
    var myDictionary = (Dictionary<int, List<string>>)value;
    ...
}
private void ReceiveMessagesStatus(receiveMessageAction,对象值)
{
var myDictionary=(Dictionary)值;
...
}

您是否尝试过将值转换为字典?e、 g

private void ReceiveMessagesStatus(ReceieveMessageAction action, object value)
{
    var myDictionary = (Dictionary<int, List<string>>)value;
    ...
}
private void ReceiveMessagesStatus(receiveMessageAction,对象值)
{
var myDictionary=(Dictionary)值;
...
}
解决方案:

[1]

[2]

private void receivesmessagestatus(ReceiveMessageAction操作,字典值)
{
...
}
解决方案:

[1]

[2]

private void receivesmessagestatus(ReceiveMessageAction操作,字典值)
{
...
}

您可以使用lambda进行类型安全操作,而无需强制转换:

  Invoke(new MethodInvoker(
    () => ReceivesMessagesStatus(ReceiveMessageAction.Notification, messagesForNotification)
  ));

您可以使用lambda执行类型安全操作,而无需强制转换:

  Invoke(new MethodInvoker(
    () => ReceivesMessagesStatus(ReceiveMessageAction.Notification, messagesForNotification)
  ));

你能详细说明一下吗?你能详细说明一下吗?@伊曼纽尔:为什么不能?也许
值为(字典)
?@Emanuel:为什么不呢?可能
值为(字典)
private void ReceiveMessagesStatus(ReceieveMessageAction action, object value)
{
    var myDictionary = (Dictionary<int, List<string>>)value;
    ...
}
Invoke(new ThreadStatusCallback(ReceivesMessagesStatus), new object[] { ReceiveMessageAction.Notification, messagesForNotification } );
private void ReceivesMessagesStatus(ReceiveMessageAction action, Dictionary<int, List<string>> value)
{
    ...
}
  Invoke(new MethodInvoker(
    () => ReceivesMessagesStatus(ReceiveMessageAction.Notification, messagesForNotification)
  ));