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 回答