【发布时间】:2015-12-07 21:40:35
【问题描述】:
我有一个用 C# 编写的 ComVisible COM 类。我想使用 COM 从另一个 C# 代码中调用它并传递参数的默认值。我可以在没有默认参数的情况下调用许多其他方法。
这是我能想到的最好的。前两行适用于我的所有其他方法。
Type mytype = Type.GetTypeFromProgID("MyType");
dynamic myinstance = Activator.CreateInstance(mytype);
object missingValue = System.Reflection.Missing.Value;
myinstance.generatecsvdocument("mystring", ref missingValue);
我的方法是这样的:
public void generatecsvdocument(string mystring, string rowseperator = "\n")
当我运行它时,我得到了错误:
'generatecsvdocument(string, string)' 有一些无效参数
【问题讨论】:
-
(string, string)重载真的存在吗?错误信息是不言自明的。 -
是的,它确实存在,但我将 System.Reflection.Missing.Value 作为第二个参数传递,它不是字符串。
-
我认为 COM 没有默认方法。 C# 可以,但并非所有 C# 功能都在 COM 中公开。
-
是的,COM 肯定有默认方法。我可能不得不在至少完全支持可选参数的 VB.net 中编写调用代码。
-
myinstance.generatecsvdocument("mystring")?