lunes 22 de septiembre de 2008

[C#] Late binding helper library

Bueno, pues cuelgo un nuevo y sencillo proyectillo de librería para facilitar las llamadas usando Late Binding en C#. La verdad es que es un poco pesado usar Late Binding en C#, y como contraste en VB lo simplifican en mi opinión sobremanera:
Dim lateBindingObject As Object
lateBindingObject = CreateObject("Word.Application")
lateBindingObject.Visible = True
lateBindingObject.Quit(0)
Esto es lo que hay que hacer en C# lo que hace realmente el compilador de Visual Basic sin que te enteres (tx to Reflector):
object lateBindingObject = RuntimeHelpers.GetObjectValue(Interaction.CreateObject("Word.Application", ""));
NewLateBinding.LateSet(lateBindingObject, null, "Visible", new object[] { true }, null, null);
NewLateBinding.LateCall(lateBindingObject, null, "Quit", new object[] { 0 }, null, null, null, true);

Usando mi librería esto se transforma en:

ILateBindingFacade word = LateBindingFactory.CreateAutomationLateBinding("Word.Application");
word.Set("Visible", true);
word.Call("Quit", Args.Build(0));
Que simplifica un poco las cosas, o al menos eso espero. Y aprovechando el tema he escrito un artículo en CodeProject explicando un poco el funcionamiento, aunque eso si en inglés.