Я использую MSScriptControl в C#. Я хотел бы передать класс из сценария хосту. Упрощенный пример: Javascript:C# MSScriptControl Pass Class to Function
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.Reflection, вам необходимо получить ITypeInfo из системы. Runtime.InteropServices: – Mangist