2017-02-12 8 views
0

IronPythonでC#インターフェイスを実装しようとしていますが、問題があります。 私は別のC#のインターフェイスを前にこれをやったが、私は成功し、それを使用するためにIronPythonの中でサブクラス化する方法を解決することができていませんでした別のものに遭遇してきた、ここにある:IIronPythonの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) 

私は今までそれを使用することができました私の目的のために。誰かがコード内に問題を発見した場合や、より適切な実装を知っている場合は、投稿してください!

乾杯