Patterns und Practices für die Softwareentwicklung in .NET: die Enterprise Library. Teil 4: Unity und der Service Locator in Office Anwendungen (VSTO)

“Für viele Vorgänge, welche man tagtäglich in der .NET Entwicklung benötigt gibt es bereits viele hilfreiche Libraries. In dieser Serie werden best practices vom Patterns&Practices Team vorgestellt. Alle diese Beiträge können durch den Tag “p&p” abgerufen werden.”

Eine kleine, wenn auch nicht weiter wesentliche Eigenheit für Unity und dem ServiceLocator ergibt sich in der Office Entwicklung. Hier verwendet man häufig den Ribbon als UI Element. will man Unity für irgendwelche Elemente im Ribbon verwenden, so kann es sein das Unity “noch nicht konfiguriert” ist. Der Grund ist das Ladeschema für Office. Hierzu möchte ich mal aufzeigen wie Office Solutions geladen werden:

(Quelle: https://msdn.microsoft.com/en-us/library/bb386298.aspx)

1. Die Office Anwendung sucht nach Addins in der Registry

2. Wird ein Office-AddIn gefunden, so wird nacheinander das Deployment manifest und das Application manifest geladen.

3. Im Anschluss daran wird die Assembly an sich geladen und ist “Betriebsbereit”.

Zwischen dem AddIn und der Office-Anwendung kommt es nun zu Aufrufen auf das Objektmodell und zu CallBacks und Events.

Was bedeutet dies nun für Entwickler, die Unity in einem Office-AddIn verwenden? Nachdem der Ribbon vor dem eigentlichen AddIn (ThisAddIn_Startup") geladen wird, muss man dies natürlich in der Anwendungsentwicklung berücksichtigen. Hierfür muss der Container im Ribbon Startup initialisiert werden.