【发布时间】:2017-10-04 22:58:36
【问题描述】:
我在 C# 中使用 MSScriptControl。我想将一个类从脚本传递给主机。简化示例: Javascript:
function Fx(n) {
this.name = n;
}
var fx = new Fx("test");
rfx.DoEffect(fx);
C#:
[ComVisible(true)]
public class Rfx {
public void DoEffect(object fx) {
// Try to read fx.name
}
}
我的问题是:如何从对象(C# 报告为 System.__ComObject)中获取数据。我尝试了here 提供的技术,但它不起作用:
public void DoEffect(object fx)
{
System.Reflection.FieldInfo[] myFields = fx.GetType().GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
Console.WriteLine("FieldInfo length = " + myFields.Length);
for (int i = 0; i < myFields.Length; i++)
{
Console.WriteLine("The value of {0} is: {1}", myFields[i].Name, myFields[i].GetValue(fx));
}
}
myFields.Length 为 0。
【问题讨论】:
-
您需要从 System.Runtime.InteropServices 获取 ITypeInfo,而不是使用 System.Reflection:
标签: c# msscriptcontrol