Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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# 识别了一个丢弃活动_C#_Wpf_Workflow Foundation 4 - Fatal编程技术网

C# 识别了一个丢弃活动

C# 识别了一个丢弃活动,c#,wpf,workflow-foundation-4,C#,Wpf,Workflow Foundation 4,我在WPF工作。我有以下问题。当我将一个新活动放到设计器中时,我需要在哈希表中存储一些信息。此哈希表必须具有以下结构: 键:活动对象删除值:此活动在运行时创建的变量列表 现在,我在Window类中有以下代码: private void AddDesigner() { this.wd = new WorkflowDesigner(); ------------------------ ModelService ms = wd.Context.Services.Ge

我在WPF工作。我有以下问题。当我将一个新活动放到设计器中时,我需要在哈希表中存储一些信息。此哈希表必须具有以下结构:

键:活动对象删除值:此活动在运行时创建的变量列表

现在,我在Window类中有以下代码:

 private void AddDesigner()
 {
     this.wd = new WorkflowDesigner();
     ------------------------
     ModelService ms = wd.Context.Services.GetService<ModelService>();
     if (ms != null)
            ms.ModelChanged += new EventHandler<ModelChangedEventArgs>(ms_ModelChanged);
 }
private void AddDesigner()
{
this.wd=新工作流设计器();
------------------------
ModelService ms=wd.Context.Services.GetService();
如果(毫秒!=null)
ms.ModelChanged+=新事件处理程序(ms_ModelChanged);
}
而吴女士则改变了:

 void ms_ModelChanged(object sender, ModelChangedEventArgs e)
 {
        if (e.ItemsAdded != null)
        {
            ModelItem item = e.ItemsAdded.FirstOrDefault<ModelItem>();
            var test = item.GetCurrentValue() as CountActivity;
            RulesDll.ObjectsClass.HashTableActivity.HashActivity.Add(XXXX, lista);
        }

        else if (e.ItemsRemoved != null)
        {
            ModelItem item = e.ItemsRemoved.FirstOrDefault<ModelItem>();
            //mi.Properties["Variables"].Collection.Remove(n);
        }
    }
void ms\u ModelChanged(对象发送方,modelchangedventargs e)
{
如果(如ItemsAdded!=null)
{
ModelItem=e.ItemsAdded.FirstOrDefault();
var test=item.GetCurrentValue()作为CountActivity;
RulesDll.ObjectsClass.HashTableActivity.HashActivity.Add(XXXX,lista);
}
else if(e.ItemsRemoved!=null)
{
ModelItem=e.ItemsRemoved.FirstOrDefault();
//mi.Properties[“Variables”].Collection.Remove(n);
}
}
In:RulesDll.ObjectsClass.HashTableActivity.HashActivity.Add(XXXX,lista)

其中XXXX必须是设计器中删除的对象项。。。。好的,正如我所知,在哈希表中添加一个重复的键是不可能的,当我使用以下代码在设计器中删除两个相同的活动时:

RulesDll.ObjectsClass.HashTableActivity.HashActivity.Add(项,列表A)

表示哈希表中允许正常值不重复的错误


那么,我要做什么来识别我放在设计器中的活动呢?

为什么不能使用当前活动对象作为键

hashtable.Add(item.GetCurrentValue(), ...);
无论如何,几乎可以肯定的是,Hashtable在内部使用的是
System.Object.GetHashCode()
,虽然冲突很难发生


在工作流设计时,您无法访问某种活动唯一id。您只能靠自己。就像我说的,我不知道你想做什么,但听起来不太好

我不知道你想做什么,但听起来不太好!:)这听起来不是一个好的设计。你是否考虑过使用工作流扩展来达到这个目的?谢谢所有的答案!我无法使用item.GetCurrentValue(),因为如果我在设计器中删除两个相同的活动,调试中会显示重复的错误键。。。所以我不知道我要做什么来识别我放弃的每一个活动。。。