2017-02-12 38 views
0

我想在IronPython中实现一个C#接口,但遇到了一些麻烦。我之前用另一个C#接口完成了这个工作,但遇到了另一个,我还没有能够解决如何在IronPython中继承以成功使用它,这里是:IronPython中的C#接口

我的C#接口想在IronPython的实施:

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 

任何帮助,将这么多的赞赏!

回答

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) 

我到目前为止一直能够使用它为我的目的。如果有人注意到代码中的任何问题或知道更正确的实施,请发布!

干杯