Gemeinsam zu mehr Effizienz in der Anwendungserstellung
K |
K |
||
Zeile 1: | Zeile 1: | ||
* Object statt Variant in COM Interface: <code>[MarshalAs(UnmanagedType.IDispatch)]</code> | * Object statt Variant in COM Interface: <code>[MarshalAs(UnmanagedType.IDispatch)]</code> | ||
- | <source lang="csharp">void CallTestByName(string procName, [MarshalAs(UnmanagedType.IDispatch)] out object test2Add);</source> | + | <source lang="csharp">void CallTestByName(string procName, [MarshalAs(UnmanagedType.IDispatch)] out object test2Add); |
+ | |||
+ | object Fixture { [return: MarshalAs(UnmanagedType.IDispatch)] get; } | ||
+ | |||
+ | object Parent { [param: MarshalAs(UnmanagedType.IDispatch)] set; [return: MarshalAs(UnmanagedType.IDispatch)] get; }</source> | ||
* ByRef-Übergabe mit InvokeMember und Application.Run: ParameterModifier verwenden - damit kann ByRef markiert werden | * ByRef-Übergabe mit InvokeMember und Application.Run: ParameterModifier verwenden - damit kann ByRef markiert werden | ||
<source lang="csharp">object[] parameters = { getTestClassFactoryProcedureName(className), new Object() }; | <source lang="csharp">object[] parameters = { getTestClassFactoryProcedureName(className), new Object() }; | ||
Zeile 9: | Zeile 13: | ||
OfficeApplication.GetType().InvokeMember("Run", BindingFlags.InvokeMethod, null, OfficeApplication, | OfficeApplication.GetType().InvokeMember("Run", BindingFlags.InvokeMethod, null, OfficeApplication, | ||
parameters, modifiers, null, null);</source> | parameters, modifiers, null, null);</source> | ||
- | |||
- | |||
- | |||
- | |||
- |
[MarshalAs(UnmanagedType.IDispatch)]
void CallTestByName(string procName, [MarshalAs(UnmanagedType.IDispatch)] out object test2Add); object Fixture { [return: MarshalAs(UnmanagedType.IDispatch)] get; } object Parent { [param: MarshalAs(UnmanagedType.IDispatch)] set; [return: MarshalAs(UnmanagedType.IDispatch)] get; }
object[] parameters = { getTestClassFactoryProcedureName(className), new Object() }; ParameterModifier p = new ParameterModifier(2); p[1] = true; ParameterModifier[] modifiers = { p }; OfficeApplication.GetType().InvokeMember("Run", BindingFlags.InvokeMethod, null, OfficeApplication, parameters, modifiers, null, null);