Exception: Specified cast is not valid in der ThisAddin_OnConnection Mehode

Aug 13, 2015 at 9:27 PM
Hi Sebastian,

mein Problem ist, dass ich in der einzigen Zeile der Methode
  void ThisAddin_OnConnection(object Application, ext_ConnectMode ConnectMode, object AddInInst, ref Array custom)
        {
                AddInInst.GetType().InvokeMember("Object", BindingFlags.SetProperty, null, AddInInst, new object[] { new AddinObject() });
            }
eine Exception kriege, die mir nicht besonders viel sagt:
ex = {"Exception has been thrown by the target of an invocation."}

InnerException = {"Specified cast is not valid."}

StackTrace:
   at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
   at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
   at System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args)
at ...ThisAddin.ThisAddin_OnConnection(Object Application, ext_ConnectMode ConnectMode, Object AddInInst, Array& custom)
Wenn ich mit dem Mauszeiger über den Application Parameter der Methode gehe und den Eintrag
"Dynamic View = Expanding the Dynamic View will get the dynamic members for the object"
aufklappe, sehe ich sehr viele Einträge, wo es steht:
{System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Runtime.InteropServices.COMException: Application.ActivePresentation : Invalid request.  There is no active presentation.
   --- End of inner exception stack trace ---
   at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
   at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
   at System.Dynamic.IDispatchComObject.GetMembers(IEnumerable`1 names)}
Ich denke das sollte nicht sein, denn bei zwei anderen AddIns kriege ich diese Exception an der gleichen Zeile nicht und die jeweiligen Einträge(für das Application Objekt) sind mit Werten befüllt.
Hast du eine Idee, woran es liegen kann?
Coordinator
Aug 14, 2015 at 5:07 AM
hey men,

Ich habe grosse Probleme dir inhaltlich zu folgen
Um welche Office Anwendung geht es denn eigentlich? (Es deutet auf PowerPoint hin...)

Wenn ich dich richtig verstanden habe löst folgende Zeile einen Fehler aus.
            AddInInst.GetType().InvokeMember("Object", BindingFlags.SetProperty, null, AddInInst, new object[] { new AddinObject() });
Habe ich das richtig verstanden? Ich kann an der Zeile soweit erstmal keinen Fehler erkennen, deine AddinObject Klasse die du (als Instanz) zuweist ist möglicherweise keine COM gültige Klasse(also nicht mit den nötigen Attributen ausgestattet oder vielleicht nicht public) Was der Application Parameter mit dem Problem zu tun hat erschliesst sich mir so erstmal garnicht. Application tut doch hier garnichts? Und die letzte (3.) Fehlermeldung ist welchem Problem zuzuordnen?

*let me know
Sebastian
Aug 14, 2015 at 6:19 AM
Hi,

danke für die schnele Antwort. Ja, es handelt sich um PowerPoint und du hast alles richtig verstanden. Es lag daran, dass die AddinObject Klasse nicht public war.
Danke nochmal!