Red de conocimiento informático - Problemas con los teléfonos móviles - IDataProvider estático público GetInstance()

IDataProvider estático público GetInstance()

Aquí está el modo singleton.

El método GetProvider() se utiliza para generar un objeto instanciado de la interfaz IDataProvider, y el método de reflexión se aplica en el medio, de la siguiente manera:

instancia = (IDataProvider) activador. CreateInstance(Type. GetType(String. Format("Music.Data.{0}). DataProvider, Music.Data.{0}", Configuration. GetDbType), false, true)); reflexión para crear una clase que satisfaga la interfaz IDataProvider y asignarla a la instancia. Similar a la instancia habitual del proveedor de datos = acceso a nuevos datos de música (). Pero la aplicación de la reflexión hace que el código sea más fácil de configurar y más flexible. Por ejemplo, puede crear múltiples métodos de acceso a la base de datos, implementar IDataProvider y luego escribir la información del nombre de la clase de la base de datos de la aplicación actual en el archivo de configuración, de modo que se puedan crear clases específicas mediante la reflexión. configuración. GetDbType en la oración anterior se usa para obtener la información de la base de datos actual en el archivo de configuración actual y devolver la información que completó, como SqlServer, Access, MySql. No puedo ver el código específico, pero el principio es este.

La información que completes debe cumplir con:

Music.Data.Namespace.DataProvider

Es decir, por ejemplo, tienes un método de acceso a datos Access.

Debes crear una nueva biblioteca de clases: el formato es

espacio de nombres Music.Data

{

clase DataProvider: IDataProvider.

{

//Esta clase debe implementar la interfaz IDataProvider

}

}

Nota: Reemplace el espacio de nombres con el suyo propio, como Access, SqlServer, etc.

El dll generado por esta biblioteca de clases debe llamarse Music.Data namespace. El espacio de nombres dll es un símbolo del archivo de configuración. Simplemente complete el espacio de nombres que especificó en el archivo de configuración.

Otro ejemplo es SqlServer accediendo a una base de datos:

Luego crea una nueva biblioteca de clases

espacio de nombres de música. Data.SqlServer

{

Clase DataProvider:IDataProvider

{

//Esta clase debe implementar la interfaz IDataProvider

}

}

Genere el dll como Music.Data.SqlServer.dll.

Si hay otras formas de acceder a la base de datos, métodos similares

Construya otras bibliotecas de clases

Escriba Access/SqlServer u otro en el archivo de configuración.

Sea coherente con su espacio de nombres. Porque la reflexión crea objetos basados ​​en el espacio de nombres + nombre de clase, como se muestra en el código:

Tipo. GetType(String.Format("Music.Data.{0}).DataProvider, Music.Data.{0}", configuración.GetDbType)

La cadena dentro es la clase que desea crear. Nombre completo :

Formato:

Tipo.

GetType("Nombre de clase completo, nombre de ensamblado");

Nombre de clase completo = nombre de espacio de nombres + nombre de clase

Los siguientes métodos:

IDataProvider GetInstance( )

Consiste en utilizar el modo singleton para obtener IDataProvider.

Los bloqueos se utilizan para evitar conflictos cuando se ejecutan varios subprocesos al mismo tiempo. Determine si _instance está vacía, use la función anterior para crear una nueva y luego regrese.

El último método es liberar el objeto.

Si tiene tiempo para buscar algunos ejemplos de reflexión en Internet, el modelo singleton debería ser fácil de entender, que consiste en utilizar una variable privada estática y retener solo un objeto de instancia _instancia.

Se recomienda estudiar el código fuente de PetShop y luego tener una nueva comprensión de las tres capas y la fábrica de reflejos.