¿Cuál es la diferencia entre usar la función CreateObject y la referencia en VB?
Por ejemplo, el código fuente en VB es el siguiente:
Este método se llama enlace tardío, que habla de la diferencia entre enlace temprano y enlace tardío.
dim o As Object = CreateObject(" alguna clase ")
o.Algunos métodos (arg1, arg2)
w = o.SomeFunction(arg1, arg2)
w = o.SomeGet
o.SomeSet = w
Conector final
El código convertido a C# es el siguiente :
public void TestLateBind()
{
System. Escriba oType=Sistema. escriba .GetTypeFromProgID(" alguna clase ");
Objeto o = sistema. activador . crear instancia(oType);
oType. InvokeMember("SomeMethod", sistema. reflexión. banderas vinculantes. método de invocación, nulo, o, nuevo objeto[] {arg1, arg 2});
w = oType. InvokeMember("AlgunaFunción ", sistema. reflexión. banderas vinculantes. método de invocación, nulo, o, nuevo objeto[] {arg1, arg 2 });
w = oType. InvokeMember("SomeGet ", system. reflexión. banderas vinculantes. getproperty, null, o, null);
oType. InvokeMember("SomeSet ", system. reflexión. banderas vinculantes. establecer propiedad, nulo, o, nuevo objeto[]{ w });
}
Hay llamadas a métodos y propiedades ajustes .
El ejemplo real es el siguiente, llamando a la función de Office:
public void TestLateBind()
{
System. Escriba tipo de palabra = Sistema. Type.GetTypeFromProgID("Word.Application");
Objeto palabra = sistema. activador . crear instancia(tipo de palabra);
tipo de palabra. InvokeMember( "Visible ", BindingFlags. SetProperty, null, word, new Object[]{ true });
Documento de objeto = wordType. InvokeMember( "Documentos ", BindingFlags. GetProperty, null, word, null);
Objeto Documento = Documento. ObtenerTipo(). InvokeMember( "Agregar ", BindingFlags. InvokeMethod, null, documentos, null
}
Este activador. El método CreateInstance también se puede utilizar para crear una instancia y llamar a algunos métodos de interfaz.
Después de todo, una interfaz debe tener una instancia para poder ser llamada.
2. El efecto de createObject es similar a la referencia en el menú. La diferencia es que CreateObject crea y devuelve una referencia al objeto ActiveX, lo que equivale a crear una instancia del objeto después de hacer referencia a un objeto. aún no se ha creado una instancia, por lo que necesita definir sus propias variables para crear una instancia de este objeto.
Hay otra ventaja de hacer referencia a objetos ActiveX: al escribir código, las propiedades del objeto o los nombres de los métodos aparecerán automáticamente, lo que facilitará la entrada.