0

我在 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);
 }

和 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);
        }
    }

在:RulesDll.ObjectsClass.HashTableActivity.HashActivity.Add(XXXX, lista);

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

RulesDll.ObjectsClass.HashTableActivity.HashActivity.Add(item, lista);

正常情况下,哈希表中允许出现错误提示 NOT DUPLICATE 值....

那么我必须做些什么来识别我在设计器中放置的活动?

4

1 回答 1

0

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

hashtable.Add(item.GetCurrentValue(), ...);

无论如何,几乎可以肯定 Hashtable 在System.Object.GetHashCode()内部使用“不保证不同对象的唯一返回值”,尽管很难发生冲突。

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

于 2012-09-10T17:43:08.277 回答