我希望在 Ironpython 中加载 .net dll。
但是 .net dll 中的静态函数之一有一些命名和可选参数。
喜欢,绘制(重量:w,高度:h,面积= 1)
我只能使用完整的论点吗?
我希望在 Ironpython 中加载 .net dll。
但是 .net dll 中的静态函数之一有一些命名和可选参数。
喜欢,绘制(重量:w,高度:h,面积= 1)
我只能使用完整的论点吗?
完全支持命名参数和可选参数。.NET 长期以来一直支持 VB.NET,因此 IronPython 从一开始就支持相同的方式来实现它们。新的 C# 语法映射到与旧 VB 支持相同的底层元数据。
调用时使用 f(x = 42),这是 Python 的命名参数语法。对于可选参数,您可以将它们排除在外。在您的示例情况下,您可能可以执行 Draw(weight, height) 并将 Area 排除在外。或者您可以将 w/ weight 和 height 作为命名参数调用,并将 Area 排除在外。
IronPython 查找的底层 .NET 元数据是 OptionalAttribute 或 DefaultParameterValueAttribute。对于可选,我们传入 default(T),除非类型是对象,在这种情况下我们传入 Missing.Value。这通常也与反射调用这些 API 的方式相匹配。
正如这个 SO question所说,IronPython 不支持 .NET 的新命名参数(它使用命名参数来调用它调用的构造函数来设置属性)。
对于可选的,正如这篇文章所说,
对于可选参数,例如地址索引器的参数,您可以使用 Missing.Value 来使用默认值。
之后,当然,from System.Reflection import Missing
。