Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cuál es la diferencia entre usar la función CreateObject y la referencia en VB?

¿Cuál es la diferencia entre usar la función CreateObject y la referencia en VB?

Este método es similar a CreateObject en 1. C# es un sistema. Activador. Crea una instancia. Las llamadas posteriores a funciones de objetos se pueden implementar mediante el método InvokeMember.

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.