none
Eine Orcale-Connection über AddinUtilities : IAddInUtilities bereitstellen RRS feed

  • Frage

  • Wir haben ein VSTO-Addin für Excel entwickelt, dass die Anmeldung an die Datenbank und Verwaltung der Benutzerdaten (Passwort ändern / neu anfordern) durchführt.Wir planen jetzt diese Oracle-Connection anderen VST0 / VBA -Projekten zur Verfügung zu stellen.

    Dazu habe ich das Pattern AddinUtilities : IAddInUtilities   genutzt.

       [ComVisible(true)]
        [InterfaceType(ComInterfaceType.InterfaceIsDual)]
        public interface IAddInUtilities
        {       
            Oracle.ManagedDataAccess.Client.OracleConnection DataBaseConnection();
                 
        }

      [ComVisible(true)]
        [ClassInterface(ClassInterfaceType.None)]
        public class AddinUtilities : IAddInUtilities
        {                               
            public Oracle.ManagedDataAccess.Client.OracleConnection DataBaseConnection()
            {
                return ThisAddIn.ReBase.UserConnection;
            }              
        }

    Rufe ich in einem anderen AddIn-Projekt die Methode DataBaseConnection(), erhalte ich folgende Ausnahme:

    //System.InvalidOperationException was unhandled by user code
      //HResult=-2146233079
      //Message=This type has a ComVisible(false) parent in its hierarchy, therefore QueryInterface calls for IDispatch or class interfaces are disallowed.
      //Source=mscorlib
      //StackTrace:
      //     at System.StubHelpers.InterfaceMarshaler.ConvertToNative(Object objSrc, IntPtr itfMT, IntPtr classMT, Int32 flags)
      //     at ReWareExcel.IAddInUtilities.DataBaseConnection()
      //     at TestAddInUitilitiesExcel.UsingReWareAddin.DatabaseConnection() in C:\Data\Visual Studio 2010\Projects\TestAddInUitilitiesExcel\TestAddInUitilitiesExcel\UsingReWareAddin.cs:line 39
      //     at TestAddInUitilitiesExcel.Ribbon1.Button1Click(Object sender, RibbonControlEventArgs e) in C:\Data\Visual Studio 2010\Projects\TestAddInUitilitiesExcel\TestAddInUitilitiesExcel\Ribbon1.cs:line 45
      //     at Microsoft.Office.Tools.Ribbon.RibbonPropertyStorage.ControlActionRaise(IRibbonControl control)
      //     at Microsoft.Office.Tools.Ribbon.RibbonPropertyStorage.ButtonClickCallback(RibbonComponentImpl component, Object[] args)
      //     at Microsoft.Office.Tools.Ribbon.RibbonManagerImpl.Invoke(RibbonComponentCallback callback, Object[] args)
      //     at Microsoft.Office.Tools.Ribbon.RibbonMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
      //     at Microsoft.Office.Tools.Ribbon.RibbonManagerImpl.System.Reflection.IReflect.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParameters)
      //InnerException:

    Datenbank-Treiber: Oracle.ManagedDataAccess.dll Version 4.121.2.0

    Gibt es einen Weg diese Ausnahme zu vermeiden?

    Vielen Dank im Voraus

    Holger

    Freitag, 17. April 2015 16:11

Alle Antworten