2012-06-15 43 views
0

信息:道歉提前,因爲我不知道我的解釋是否足夠。我試圖讓我的腦海裏圍繞如何編寫遺傳算法。下面的解釋是一般性的部分我不確定哪些具有合理數量的c#經驗的人應該能夠回答爲不是GA特定的知識。優化器,如何一個方法可以知道有多少參數在另一個

問題: 我需要編寫一個方法(Manager_Method),其主要目的是在不同的參數組合,以傳遞給第二個方法(Computation_Method)其中,使用這些輸入值,返回一個結果。

棘手的部分來自事實,即Manager_Method需要能夠確定選定Computation_Method需要哪些參數(將會有幾個Computation_Methods,每個具有不同數量/類型的輸入)。

所以即時通訊想知道如果有人知道一些光滑的方式,以解決這個問題,酒吧必須硬編碼到一個數組,每個Computation_Method的輸入是什麼。每次我添加一個新的Computation_Method時,都需要重新編譯。

在此先感謝。

編輯:XML可能是一個想法。我試圖擺脫的東西是參數中的硬編碼。我試圖避免的是重新編譯的事件中,我添加了一個新的Computation_Method並且也以某種方式讓管理器方法知道每個Computation_Method需要什麼參數。我認爲會有一些這樣做的方式。

回答

1

不知道我理解你的問題,但看起來像你可以在這裏使用反射。特別是MethodInfo類和它的GetParameters方法。下面是我該怎麼做:

public class A 
{ 
    public void MyMethod(int integer, string str) 
    { 
    } 
} 

void Main() 
{ 
    System.Reflection.MethodInfo method = typeof(A).GetMethod("MyMethod"); 
    ParameterInfo[] pars = method.GetParameters(); 
    foreach (ParameterInfo p in pars) 
    { 
     Console.WriteLine(p.Name + ": " + p.ParameterType); 
    } 
} 
+0

我有一個在網上快速查找,我相信這是我在尋找。非常感謝。 –

1

那麼我不知道這些可以是什麼參數,但有限的信息給你。我認爲你可以填充你的ManagerMethod中的字典,並將其傳遞到Computation_Method,您可以檢查密鑰/值對。 關鍵將是你的參數名,值將是你的參數值通過。

e.g:

private vioid ManagerMethod() 
{ 
    Dictionary<string,string> params = new Dictionary<string,string>(); 
    params.Add("param1","Value1"); 
    params.Add("param2","Value2"); 
    params.Add("param3","Value3"); 

    ComputationMethod(params); 
} 
private void ComputationMethod(Dictionary<string,string> param) 
{ 
    //Iterate through the Dictioanry 
    // Check for your Key/Value and performa accoudringly. 
} 

基於同樣的想法。現在你可以把你的參數放在XML文件中。閱讀並通過它們。 您也可以創建一個對象列表並將其傳遞給您的方法。

我認爲這可以幫助你想出一些東西。

+0

請參閱原始問題底部的編輯。感謝回覆。 –

+0

您可以在XML中完成配置。這是一個草案的想法...你不需要編譯任何東西。假設您有一段名爲MetaData的XML部分,您可以在其中定義您的方法和參數。然後,您將爲每個有參數及其值在其中定義的方法分段。每個方法都知道它的參數,值,參數的數量。那些方法知道他們屬於哪個部分。我希望你有一些想法。我在這裏說的 – Tabish

+0

我已經upvoted你的答案,因爲XML將是一個選項,但它並不是特別的我正在尋找。非常感謝您的時間。 –

相關問題