0

信息:提前道歉,因为我不确定我的解释是否足够。我试图弄清楚如何编写遗传算法。下面的解释是一般部分,我不确定哪个具有合理 c# 经验的人应该能够回答,因为它不是 GA 特定知识。

问题: 我需要编写一个方法(Manager_Method),其主要目的是将不同的参数组合传递给第二种方法(Computation_Method),该方法使用这些输入值返回结果。

棘手的部分在于 Manager_Method 需要能够确定所选 Computation_Method 所需的参数(将有几个 Computation_Methods,每个都有不同数量/类型的输入)。

所以我想知道是否有人知道一些巧妙的方法来解决这个问题,除非必须硬编码到一个数组中,每个 Computation_Method 的输入是什么。每次我添加一个新的 Computation_Method 时都需要重新编译。

提前致谢。

编辑:XML 可能是一个想法。我试图摆脱的是参数中的硬编码。我试图避免的是在我添加了一个新的 Computation_Method 并且还以某种方式让 Manager 方法知道每个 Computation_Method 需要哪些参数的情况下重新编译。我想会有一些方法可以做到这一点。

4

2 回答 2

1

好吧,我不知道这些参数可以是什么,但是您提供的信息有限。我认为您可以在 ManagerMethod 中填充字典并将其传递给 Computation_Method ,您可以在其中检查键/值对。键是您的参数名称,值是您要传入的参数值。

例如:

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 文件中。阅读并通过它们。您还可以创建一个对象列表并将其传递给您的方法。

我认为这可以帮助你想出一些东西。

于 2012-06-15T19:03:52.743 回答
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);
    }
}
于 2012-06-15T19:20:57.590 回答