【问题标题】:C# interface in IronPythonIronPython 中的 C# 接口
【发布时间】:2017-06-30 06:03:44
【问题描述】:

我正在尝试在 IronPython 中实现 C# 接口,但遇到了一些麻烦。 我之前使用另一个 C# 接口完成了此操作,但遇到了另一个我无法解决如何在 IronPython 中进行子类化以成功使用它的接口,这里是:

我想在 IronPython 中实现的 C# 接口:

using System;
namespace Accord.Math.Random

{
    public interface IRandomNumberGenerator
    {
        float Mean
        {
            get;
        }
        float Variance
        {
            get;
        }
        float Next();
        void SetSeed(int seed);
    }
}

这是我过去成功做过的事情:

C#接口实现

using System;
namespace Accord.Genetic
{
    public interface IFitnessFunction
    {
        double Evaluate(IChromosome chromosome);
    }
}

IronPython 实现:

class FitnessFunction(AG.IFitnessFunction):
    def Evaluate(self, chromosome):
        #some fitness calculation using chromosome
        return Fitness

任何帮助将不胜感激!

【问题讨论】:

    标签: c# interface ironpython genetic-algorithm accord.net


    【解决方案1】:

    我解决了! 我想这个实例中的接口实际上是在调用 Accord.Math.Random 命名空间中的一些其他方法,所以我去寻找这些方法。

    我最终还使用了 IRandomNumberGenerator 接口的更新版本,即 IRandomNumberGenerator[T]

    这是 C# 版本

    using System;
    namespace Accord.Math.Random
    {
        public interface IRandomNumberGenerator<T>
        {
            T[] Generate(int samples);
            T[] Generate(int samples, T[] result);
            T Generate();
        }
    }
    

    这是 IronPython 的工作版本

    class RandomNumberGenerator(AM.Random.IRandomNumberGenerator[System.Double]):
        def __init__(self):
            self.actual = AM.Random.ZigguratUniformOneGenerator()
        def Generate(self):
            return self.actual.Generate()
        def Generate(self, samples):
            return self.actual.Generate(samples)
        def Generate(self, samples, result):
            return self.actual.Generate(samples, result)
    

    到目前为止,我已经能够将它用于我的目的。如果有人注意到代码中的任何问题或知道更合适的实现,请发布!

    干杯

    【讨论】:

      猜你喜欢
      • 2012-01-22
      • 2010-10-16
      • 2011-06-02
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      相关资源
      最近更新 更多