2012-12-30 83 views
0

我有兩個名單。一個有用戶選擇的對象。第二個將包含將用於第一個列表中的對象的方法。是否可以將一個方法插入一個List <>?

List 1List2

PaulMethod ShakeHand

MarkMethod HighFive

AnnieMethod Hug

我會使用索引使列表2中的方法0使用列表1中的對象0. 他們將繼續沿着列表走下去,直到執行每個操作。

我已經嘗試使用Add()與裏面的方法沒有運氣。 我也用過Google,但沒有運氣,因爲我不確定我應該使用什麼術語。

+7

您正在尋找的術語是「委託」。特別是,查找['行動'](http://msdn.microsoft.com/en-us/library/vstudio/system.action.aspx) –

+0

如果方法具有相同的簽名,委託可能是你想要在列表2中存儲。 – kenny

+1

使用兩個列表的dicsery insead。 – Nahum

回答

2

使用Func<T1, T2, .., TReturn>Action<T1, ... Tn>代表。唯一的問題是這些方法需要具有相同的簽名。

3

你可以通過插入一個對象 - 也就是類的一個實例來實現。

使用名爲Greet或類似的方法創建基類。創建實現Greet方法的子類並執行ShakeHand,HighFiveHug。插入相應子類的實例,然後在需要時調用Greet方法。

0

這一切聽起來有點動態給我。我會使用反射,既用於使用可用的方法填充選擇列表,也用於調用 - 這會將我們引向參數問題。所有提出的解決方案都假定所有要調用的方法都具有相同的簽名。如果這是真的,那麼這些建議中的任何一個都可以發揮作用,因爲我和德米特里需要最少的維護來添加方法。德米特里的版本更好,如果你有一個合適的框架版本(但你仍然需要反射來填充你的選擇列表)。

相關問題