0

この簡単な例を c# で書きました:

 using System;
 using System.Collections.Generic;
 using System.Linq;
  using System.Text;

  namespace DLLTest
  {
        public class MyDllTest
          {
                 public  int sumFunc(int a, int b)
                    {

        int sum = a + b;
        return sum;

    }

    public static string stringFunc(string a, int numT)
    {
           if (numT < 0)
            {
               string errStr = "Error! num < 0";
               return errStr;
            }
              else
             {
                 return a;
             }

         }
    }
}

ご覧のとおり、最初の関数では "static" を使用していません。このコードを使用して Iron python で実行すると:

import sys
 import clr
clr.addReferenceToFileAndPath(...path do dll...)

from DLLTest import *
 res = MyDllTest.sumFunc(....HERE MY PROBLEM IS...)

2 つの引数を渡すと、次のエラーが発生します。

>>> res = MyDllTest.sumFunc(4,5)

Traceback (most recent call last):
  File "<string>", line 1, in <module>
TypeError: sumFunc() takes exactly 3 arguments (2 given)

私が理解しているように、最初の引数が「MyDllTest」型からのものであることが求められますが、書き込もうとするとa = new MyDllTestエラーが発生します。

私は何をすべきか?どんな助けでも大歓迎です!

4

1 に答える 1

2

sumFuncはインスタンス メソッドであるため、まずメソッドを呼び出せるようにクラスのインスタンスを作成する必要があります。

import clr
clr.addReferenceToFileAndPath(...path do dll...)

from DLLTest import MyDllTest

test = MyDllTest()
test.sumFunc(33, 44)

C# の非静的メソッドはクラスのインスタンスでのみ呼び出すことができ、静的メソッドはクラス自体で呼び出すことができます。

静的メソッドとインスタンス メソッド

于 2013-08-25T12:19:56.900 に答える