【发布时间】:2021-03-03 05:19:32
【问题描述】:
我想要一个 python 应用程序将通用列表传递给我的 C# 代码。我创建了一个演示应用程序,复制了我看到的问题。
我有这个 python 代码 (Python 2.7) MainApp.py,它调用了一个 C# DLL (.NET 4.7):
import clr, sys
sys.path.append(r"C:\PathToMyProject\ClassLibrary1\bin\Debug")
clr.AddReference(r"C:\PathToMyProject\ClassLibrary1\bin\Debug\ClassLibrary1.dll")
from ClassLibrary1 import Class1
class Person:
def __init__(self, Name):
self.Name = Name
myclass = Class1()
nameList = []
nameList.append(Person("Joe"))
nameList.append(Person("Mary"))
nameList.append(Person("Chris"))
result = myclass.SayHello(nameList)
print(result)
请注意,我有一个 Person 对象列表 nameList,我正在尝试传递。这是 C# 代码:
using System.Collections.Generic;
namespace ClassLibrary1
{
public class Class1
{
public string SayHello(List<dynamic> names)
{
return $"Hello, {names.Count} people!";
}
}
}
SayHello 方法接受List<dynamic> 的参数。但是,我在运行>python MainApp.py 时收到以下错误:
Traceback(最近一次调用最后一次):文件“.\MainApp.py”,第 20 行,在 结果 = myclass.SayHello(nameList) TypeError: 没有方法匹配 SayHello 的给定参数: (
)
【问题讨论】:
标签: python c# ironpython dynamic-language-runtime