2012-09-10 16 views
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);話說不重複值在哈希表允許作爲普通

錯誤....

所以我必須做的identificated,我在設計掉落活動?

+0

我不知道你在做什麼,但聽起來不太好! :) – Joao

+0

這聽起來不像一個好設計。您是否考慮使用工作流程擴展來達到這個目的? – Will

回答

0

爲什麼你不能使用當前活動對象作爲關鍵?

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

反正幾乎certaintly Hashtable是使用System.Object.GetHashCode()其內部「does not guarantee unique return values for different objects」雖然衝突是難以發生的。

在工作流程設計時,您無法訪問某種活動唯一標識。你是你自己的。就像我說的,我不知道你在做什麼,但聽起來不太好!

+0

感謝您的所有答案!我不能使用item.GetCurrentValue()因爲如果我在設計器中放置兩個相同的活動,重複的錯誤鍵顯示在調試中......所以我不知道我必須做什麼來識別每一個活動,我算了吧... –

相關問題