簡體   English   中英

IronPython中的C#接口

[英]C# interface in IronPython

我正在嘗試在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

任何幫助將不勝感激!

我整理了! 我發現此實例中的接口實際上是在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)

到目前為止,我已經可以將其用於我的目的。 如果有人注意到代碼中的任何問題或知道更適當的實現,請發布!

干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM