2017-02-12 6 views
0

IronPython에서 C# 인터페이스를 구현하려고하는데 문제가 있습니다. 다른 C# 인터페이스로이 작업을 수행했지만 IronPython에서 하위 클래스를 사용하여 성공적으로 사용하는 방법을 해결할 수 없었던 다른 요소를 발견했습니다. 여기에 있습니다 :IronPython의 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 네임 스페이스의 다른 메서드를 호출하고있는 것으로 파악하여 이러한 메서드가 어떤 것인지 찾아 냈습니다.

는 또한 Heres는 작업 IronPython의 버전

를 IRandomNumberGenerator [T]이었다 IRandomNumberGenerator 인터페이스의 더 업데이트 된 버전을 Heres

는 C# 버전

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

을 사용 끝내

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) 

지금까지 사용해 보았습니다. 내 목적을 위해서. 누구든지 코드에 문제가 있거나 더 적절한 구현 방법을 알고 있다면 게시하십시오!

건배