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);