Class TypeBuilderExtensions
Contiene extensiones útiles para la generación de miembros por medio de la clase TypeBuilder.
Inherited Members
Namespace: TheXDS.MCART.Types.Extensions
Assembly: MCART.TypeFactory.dll
Syntax
public static class TypeBuilderExtensions
Methods
| Edit this page View SourceAddAutoProperty(TypeBuilder, string, Type)
Agrega una propiedad automática pública al tipo.
Declaration
public static PropertyBuildInfo AddAutoProperty(this TypeBuilder tb, string name, Type type)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad automática. |
string | name | Nombre de la nueva propiedad. |
Type | type | Tipo de la nueva propiedad. |
Returns
Type | Description |
---|---|
PropertyBuildInfo | Un PropertyBuildInfo que contiene información sobre la propiedad que ha sido construida. |
AddAutoProperty(TypeBuilder, string, Type, MemberAccess)
Agrega una propiedad automática al tipo.
Declaration
public static PropertyBuildInfo AddAutoProperty(this TypeBuilder tb, string name, Type type, MemberAccess access)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad automática. |
string | name | Nombre de la nueva propiedad. |
Type | type | Tipo de la nueva propiedad. |
MemberAccess | access | Nivel de acceso de la nueva propiedad. |
Returns
Type | Description |
---|---|
PropertyBuildInfo | Un PropertyBuildInfo que contiene información sobre la propiedad que ha sido construida. |
AddAutoProperty(TypeBuilder, string, Type, MemberAccess, bool)
Agrega una propiedad automática al tipo.
Declaration
public static PropertyBuildInfo AddAutoProperty(this TypeBuilder tb, string name, Type type, MemberAccess access, bool @virtual)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad automática. |
string | name | Nombre de la nueva propiedad. |
Type | type | Tipo de la nueva propiedad. |
MemberAccess | access | Nivel de acceso de la nueva propiedad. |
bool | virtual | Si se establece en true, la propiedad será definida como virtual, por lo que podrá ser reemplazada en una clase derivada. |
Returns
Type | Description |
---|---|
PropertyBuildInfo | Un PropertyBuildInfo que contiene información sobre la propiedad que ha sido construida. |
AddAutoProperty<T>(TypeBuilder, string)
Agrega una propiedad automática pública al tipo.
Declaration
public static PropertyBuildInfo AddAutoProperty<T>(this TypeBuilder tb, string name)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad automática. |
string | name | Nombre de la nueva propiedad. |
Returns
Type | Description |
---|---|
PropertyBuildInfo | Un PropertyBuildInfo que contiene información sobre la propiedad que ha sido construida. |
Type Parameters
Name | Description |
---|---|
T | Tipo de la nueva propiedad. |
AddComputedProperty(TypeBuilder, string, Type, Action<ILGenerator>)
Agrega una propiedad computada al tipo.
Declaration
public static PropertyBuildInfo AddComputedProperty(this TypeBuilder tb, string name, Type type, Action<ILGenerator> getterDefinition)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad. |
string | name | Nombre de la nueva propiedad. |
Type | type | Tipo de la nueva propiedad. |
Action<ILGenerator> | getterDefinition | Acción que implementará las instrucciones a ejecutar dentro del método asociado al accesor get de la propiedad computada. |
Returns
Type | Description |
---|---|
PropertyBuildInfo | Un PropertyBuildInfo que contiene información sobre la propiedad que ha sido construida. |
AddComputedProperty<T>(TypeBuilder, string, Action<ILGenerator>)
Agrega una propiedad computada al tipo.
Declaration
public static PropertyBuildInfo AddComputedProperty<T>(this TypeBuilder tb, string name, Action<ILGenerator> getterDefinition)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad. |
string | name | Nombre de la nueva propiedad. |
Action<ILGenerator> | getterDefinition | Acción que implementará las instrucciones a ejecutar dentro del método asociado al accesor get de la propiedad computada. |
Returns
Type | Description |
---|---|
PropertyBuildInfo | Un PropertyBuildInfo que contiene información sobre la propiedad que ha sido construida. |
Type Parameters
Name | Description |
---|---|
T | Tipo de la nueva propiedad. |
AddConstantProperty(TypeBuilder, string, Type, object?)
Agrega una propiedad con un valor constante.
Declaration
public static PropertyBuildInfo AddConstantProperty(this TypeBuilder tb, string name, Type type, object? value)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad. |
string | name | Nombre de la nueva propiedad. |
Type | type | Tipo de la nueva propiedad. |
object | value | Valor constante a asignar. |
Returns
Type | Description |
---|---|
PropertyBuildInfo | Un PropertyBuildInfo que contiene información sobre la propiedad que ha sido construida. |
AddConstantProperty<T>(TypeBuilder, string, T)
Agrega una propiedad con un valor constante.
Declaration
public static PropertyBuildInfo AddConstantProperty<T>(this TypeBuilder tb, string name, T value)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad. |
string | name | Nombre de la nueva propiedad. |
T | value | Valor constante a asignar. |
Returns
Type | Description |
---|---|
PropertyBuildInfo | Un PropertyBuildInfo que contiene información sobre la propiedad que ha sido construida. |
Type Parameters
Name | Description |
---|---|
T | Tipo de la nueva propiedad. |
AddEvent(TypeBuilder, string)
Agrega un evento al tipo.
Declaration
public static EventBuildInfo AddEvent(this TypeBuilder builder, string name)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | builder | TypeBuilder en el cual se creará el nuevo evento y sus métodos auxiliares requeridos. |
string | name | Nombre del nuevo evento. |
Returns
Type | Description |
---|---|
EventBuildInfo | Un EventBuildInfo que contiene información sobre el evento que ha sido definido. |
AddEvent<TEventArgs>(TypeBuilder, string)
Agrega un evento al tipo.
Declaration
public static EventBuildInfo AddEvent<TEventArgs>(this TypeBuilder builder, string name) where TEventArgs : EventArgs
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | builder | TypeBuilder en el cual se creará el nuevo evento y sus métodos auxiliares requeridos. |
string | name | Nombre del nuevo evento. |
Returns
Type | Description |
---|---|
EventBuildInfo | Un EventBuildInfo que contiene información sobre el evento que ha sido definido. |
Type Parameters
Name | Description |
---|---|
TEventArgs | Tipo de argumentos de evento a pasar cuando se produzca el evento. |
AddEvent<TEventHandler, TEventArgs>(TypeBuilder, string)
Agrega un evento al tipo.
Declaration
public static EventBuildInfo AddEvent<TEventHandler, TEventArgs>(this TypeBuilder builder, string name) where TEventHandler : Delegate where TEventArgs : EventArgs
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | builder | TypeBuilder en el cual se creará el nuevo evento y sus métodos auxiliares requeridos. |
string | name | Nombre del nuevo evento. |
Returns
Type | Description |
---|---|
EventBuildInfo | Un EventBuildInfo que contiene información sobre el evento que ha sido definido. |
Type Parameters
Name | Description |
---|---|
TEventHandler | Delegado del manejador de eventos. Debe seguir la firma estándar de un
manejador de eventos, es decir, debe ser un método con tipo de retorno
void, y debe contener un argumento de tipo
object) y un argumento de tipo
|
TEventArgs | Tipo de argumentos de evento a pasar cuando se produzca el evento. |
AddEvent<TEventHandler, TSender, TEventArgs>(TypeBuilder, string)
Agrega un evento al tipo.
Declaration
public static EventBuildInfo AddEvent<TEventHandler, TSender, TEventArgs>(this TypeBuilder builder, string name) where TEventHandler : Delegate where TEventArgs : EventArgs
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | builder | TypeBuilder en el cual se creará el nuevo evento y sus métodos auxiliares requeridos. |
string | name | Nombre del nuevo evento. |
Returns
Type | Description |
---|---|
EventBuildInfo | Un EventBuildInfo que contiene información sobre el evento que ha sido definido. |
Type Parameters
Name | Description |
---|---|
TEventHandler | Delegado del manejador de eventos. Debe seguir la firma estándar de un
manejador de eventos, es decir, debe ser un método con tipo de retorno
void, y debe contener un argumento de tipo
|
TSender | Tipo del objeto que genera el evento. Puede utilizarse object. |
TEventArgs | Tipo de argumentos de evento a pasar cuando se produzca el evento. |
AddOverride(TypeBuilder, MethodInfo)
Agrega una sustitución para el método especificado.
Declaration
public static MethodBuildInfo AddOverride(this TypeBuilder tb, MethodInfo method)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad automática. |
MethodInfo | method | Método a sustituir. Debe existir en el tipo base. |
Returns
Type | Description |
---|---|
MethodBuildInfo |
AddProperty(TypeBuilder, string, Type, bool, MemberAccess, bool)
Declaration
public static PropertyBuildInfo AddProperty(this TypeBuilder tb, string name, Type type, bool writable, MemberAccess access, bool @virtual)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad. |
string | name | Nombre de la nueva propiedad. |
Type | type | Tipo de la nueva propiedad. |
bool | writable | true para crear una propiedad que contiene accesor de escritura (accesor set), false para no incluir un accesor de escritura en la propiedad. |
MemberAccess | access | Nivel de acceso de la nueva propiedad. |
bool | virtual | Si se establece en true, la propiedad será definida como virtual, por lo que podrá ser reemplazada en una clase derivada. |
Returns
Type | Description |
---|---|
PropertyBuildInfo | Un PropertyBuildInfo que contiene información sobre la propiedad que ha sido construida. |
Remarks
La propiedad generada requerirá que se implementen los accesores antes de construir el tipo.
AddProperty<T>(TypeBuilder, string)
Declaration
public static PropertyBuildInfo AddProperty<T>(this TypeBuilder tb, string name)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad. |
string | name | Nombre de la nueva propiedad. |
Returns
Type | Description |
---|---|
PropertyBuildInfo | Un PropertyBuildInfo que contiene información sobre la propiedad que ha sido construida. |
Type Parameters
Name | Description |
---|---|
T | Tipo de la nueva propiedad. |
Remarks
La propiedad generada requerirá que se implementen los accesores antes de construir el tipo.
AddProperty<T>(TypeBuilder, string, bool)
Declaration
public static PropertyBuildInfo AddProperty<T>(this TypeBuilder tb, string name, bool writable)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad. |
string | name | Nombre de la nueva propiedad. |
bool | writable | true para crear una propiedad que contiene accesor de escritura (accesor set), false para no incluir un accesor de escritura en la propiedad. |
Returns
Type | Description |
---|---|
PropertyBuildInfo | Un PropertyBuildInfo que contiene información sobre la propiedad que ha sido construida. |
Type Parameters
Name | Description |
---|---|
T | Tipo de la nueva propiedad. |
Remarks
La propiedad generada requerirá que se implementen los accesores antes de construir el tipo.
AddProperty<T>(TypeBuilder, string, bool, MemberAccess)
Declaration
public static PropertyBuildInfo AddProperty<T>(this TypeBuilder tb, string name, bool writable, MemberAccess access)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad. |
string | name | Nombre de la nueva propiedad. |
bool | writable | true para crear una propiedad que contiene accesor de escritura (accesor set), false para no incluir un accesor de escritura en la propiedad. |
MemberAccess | access | Nivel de acceso de la nueva propiedad. |
Returns
Type | Description |
---|---|
PropertyBuildInfo | Un PropertyBuildInfo que contiene información sobre la propiedad que ha sido construida. |
Type Parameters
Name | Description |
---|---|
T | Tipo de la nueva propiedad. |
Remarks
La propiedad generada requerirá que se implementen los accesores antes de construir el tipo.
AddProperty<T>(TypeBuilder, string, bool, MemberAccess, bool)
Declaration
public static PropertyBuildInfo AddProperty<T>(this TypeBuilder tb, string name, bool writable, MemberAccess access, bool @virtual)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad. |
string | name | Nombre de la nueva propiedad. |
bool | writable | true para crear una propiedad que contiene accesor de escritura (accesor set), false para no incluir un accesor de escritura en la propiedad. |
MemberAccess | access | Nivel de acceso de la nueva propiedad. |
bool | virtual | Si se establece en true, la propiedad será definida como virtual, por lo que podrá ser reemplazada en una clase derivada. |
Returns
Type | Description |
---|---|
PropertyBuildInfo | Un PropertyBuildInfo que contiene información sobre la propiedad que ha sido construida. |
Type Parameters
Name | Description |
---|---|
T | Tipo de la nueva propiedad. |
Remarks
La propiedad generada requerirá que se implementen los accesores antes de construir el tipo.
AddPublicConstructor(TypeBuilder)
Inserta explícitamente un constructor público sin argumentos al tipo.
Declaration
public static ILGenerator AddPublicConstructor(this TypeBuilder tb)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | TypeBuilder en el cual se definirá el nuevo constructor. |
Returns
Type | Description |
---|---|
ILGenerator | Un ILGenerator que permite definir las instrucciones del constructor. |
AddPublicConstructor(TypeBuilder, params Type[])
Inserta explícitamente un constructor público al tipo, especificando los argumentos requeridos por el mismo.
Declaration
public static ILGenerator AddPublicConstructor(this TypeBuilder tb, params Type[] arguments)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | TypeBuilder en el cual se definirá el nuevo constructor. |
Type[] | arguments | Arreglo con los tipos de argumentos aceptados por el nuevo constructor. |
Returns
Type | Description |
---|---|
ILGenerator | Un ILGenerator que permite definir las instrucciones del constructor. |
AddWriteOnlyProperty(TypeBuilder, string, Type)
Agrega una propiedad pública de solo escritura al tipo.
Declaration
public static PropertyBuildInfo AddWriteOnlyProperty(this TypeBuilder tb, string name, Type type)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad. |
string | name | Nombre de la nueva propiedad. |
Type | type | Tipo de la nueva propiedad. |
Returns
Type | Description |
---|---|
PropertyBuildInfo | Un PropertyBuildInfo que contiene información sobre la propiedad que ha sido construida. |
AddWriteOnlyProperty(TypeBuilder, string, Type, bool)
Agrega una propiedad pública de solo escritura al tipo.
Declaration
public static PropertyBuildInfo AddWriteOnlyProperty(this TypeBuilder tb, string name, Type type, bool @virtual)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad. |
string | name | Nombre de la nueva propiedad. |
Type | type | Tipo de la nueva propiedad. |
bool | virtual | Si se establece en true, la propiedad será definida como virtual, por lo que podrá ser reemplazada en una clase derivada. |
Returns
Type | Description |
---|---|
PropertyBuildInfo | Un PropertyBuildInfo que contiene información sobre la propiedad que ha sido construida. |
AddWriteOnlyProperty(TypeBuilder, string, Type, MemberAccess)
Agrega una propiedad de solo escritura al tipo.
Declaration
public static PropertyBuildInfo AddWriteOnlyProperty(this TypeBuilder tb, string name, Type type, MemberAccess access)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad. |
string | name | Nombre de la nueva propiedad. |
Type | type | Tipo de la nueva propiedad. |
MemberAccess | access | Nivel de acceso de la nueva propiedad. |
Returns
Type | Description |
---|---|
PropertyBuildInfo | Un PropertyBuildInfo que contiene información sobre la propiedad que ha sido construida. |
AddWriteOnlyProperty(TypeBuilder, string, Type, MemberAccess, bool)
Agrega una propiedad de solo escritura al tipo.
Declaration
public static PropertyBuildInfo AddWriteOnlyProperty(this TypeBuilder tb, string name, Type type, MemberAccess access, bool @virtual)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor del tipo en el cual crear la nueva propiedad. |
string | name | Nombre de la nueva propiedad. |
Type | type | Tipo de la nueva propiedad. |
MemberAccess | access | Nivel de acceso de la nueva propiedad. |
bool | virtual | Si se establece en true, la propiedad será definida como virtual, por lo que podrá ser reemplazada en una clase derivada. |
Returns
Type | Description |
---|---|
PropertyBuildInfo | Un PropertyBuildInfo que contiene información sobre la propiedad que ha sido construida. |
DefineMethod<TResult>(TypeBuilder, string, params Type[])
Define un método que devuelve un tipo especificado.
Declaration
public static MethodBuilder DefineMethod<TResult>(this TypeBuilder tb, string name, params Type[] parameterTypes)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | TypeBuilder en el cual se creará el nuevo método. |
string | name | Nombre del nuevo método. |
Type[] | parameterTypes | Tipo de los parámetros aceptados por el método. |
Returns
Type | Description |
---|---|
MethodBuilder | Un MethodBuilder con el que se podrá definir al método. |
Type Parameters
Name | Description |
---|---|
TResult | Tipo de resultado devuelto por el método. |
DefineVoidMethod(TypeBuilder, string, params Type[])
Define un método que no devuelve valor.
Declaration
public static MethodBuilder DefineVoidMethod(this TypeBuilder tb, string name, params Type[] parameterTypes)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | TypeBuilder en el cual se creará el nuevo método. |
string | name | Nombre del nuevo método. |
Type[] | parameterTypes | Tipo de los parámetros aceptados por el método. |
Returns
Type | Description |
---|---|
MethodBuilder | Un MethodBuilder con el que se podrá definir al método. |
ExplicitImplementMethod(TypeBuilder, MethodInfo)
Implementa explícitamente un método abstracto.
Declaration
public static MethodBuildInfo ExplicitImplementMethod(this TypeBuilder tb, MethodInfo method)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | TypeBuilder en el cual se implementará de forma explícita el método abstracto. |
MethodInfo | method | Método abstracto a implementar. El TypeBuilder especificado debe implementar la interfaz en la cual está definido el método. |
Returns
Type | Description |
---|---|
MethodBuildInfo | Un MethodBuildInfo que contiene información sobre el método que ha sido implementado de forma explícita. |
Exceptions
Type | Condition |
---|---|
InvalidOperationException | Se produce si |
New(TypeBuilder)
Inicializa una nueva instancia del tipo en runtime especificado.
Declaration
public static object New(this TypeBuilder tb)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | TypeBuilder desde el cual instanciar un nuevo objeto. |
Returns
Type | Description |
---|---|
object | La nueva instancia del tipo especificado. |
Overridable(TypeBuilder, string, params Type[])
Determina si el método es reemplazable.
Declaration
public static bool? Overridable(this TypeBuilder tb, string method, params Type[] args)
Parameters
Type | Name | Description |
---|---|---|
TypeBuilder | tb | Constructor de tipo sobre el cual ejecutar la consulta. |
string | method | Nombre del método a buscar. |
Type[] | args | Tipo de argumentos del método a buscar. |
Returns
Type | Description |
---|---|
bool? | true si el método es reemplazable false en caso contrario, o null si el método no existe en la clase base del constructor de tipos. |