Articles of reflection

Obtener atributos de descripción de un Enum marcado

Estoy tratando de crear un método de extensión que devolverá una List contiene todos los atributos de Description solo para los valores establecidos de un [Flags] Enum dado. Por ejemplo, supongamos que tengo la siguiente enumeración declarada en mi código C #: [Flags] public enum Result { [Description(“Value 1 with spaces”)] Value1 = 1, [Description(“Value […]

C # Cómo verificar si un objeto es una matriz multidimensional

Soy un recién llegado a C #. Tengo un objeto en C #, ¿cómo comprobar si es una matriz única o multidimensional? int[,] array = new int[2,3]; object obj = (object) array; if(obj is Array) { if(obj.Rank==2) // I need to cast obj to array first in order to call Rank { //do something } […]

¿Cómo puedo obtener el valor predeterminado de un campo en una clase en C #?

Digamos que tengo mi clase y tengo la variable no estática int x = 5; Después de que el código se ejecuta x se cambia a otra cosa, ¿cómo puedo obtener el valor x empezado con el uso de la reflexión?

Portar código de reflexión de C # a Metro-Ui

Estoy tratando de portar una clase de C # existente (una fábrica genérica) que usa reflexión, pero no puedo obtener este fragmento de código para comstackr: Type[] types = Assembly.GetAssembly(typeof(TProduct)).GetTypes(); foreach (Type type in types) { if (!typeof(TProduct).IsAssignableFrom(type) || type == typeof(TProduct)) … Intenté buscar en Reflection en .NET Framework para Windows Metro Style Apps […]

El objeto PropertyInfo.SetValue no coincide con el tipo de destino

Tengo un error similar a este , pero desafortunadamente no es la misma solución simple. Aquí está el código: public virtual void MapObject(T obj, IViewModel viewModel, ITPSDataAccess dataAccess) { var objProps = obj.GetType().GetProperties(); var dtoProps = viewModel.GetType().GetProperties(); foreach (var dtoProp in dtoProps) { var objProp = dtoProps.SingleOrDefault(x => x.Name == dtoProp.Name); if (objProp != null) […]

¿Buscar un conjunto para todos los tipos de niños?

Me gustaría encontrar todos los tipos heredados de una base / interfaz. ¿Alguien tiene un buen método para hacer esto? Ideas? Sé que esta es una petición extraña, pero es algo con lo que estoy jugando.

Expression.ArrayAccess () en IDictionary por nombre de clave

¿Cómo creo un árbol de expresiones para leer un valor por acceso de matriz para un IDictionary ? Quiero representar: ((IDictionary)T)[“KeyName”] No puedo encontrar ningún ejemplo de ArrayAccess utilizado para acceder con el nombre de cadena. Quiero algo como: var parameterExpression = Expression.Parameter(typeof(IDictionary)); var paramIndex = Expression.Constant(“KeyName”); var arrayAccess = Expression.ArrayAccess(parameterExpression, paramIndex); Me sale un […]

¿La forma más eficiente de marcar todos los tipos en AppDomain con un atributo específico?

Si hago esto, enumero todos los tipos en mi progtwig: List attributes=new List() ; foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies()) { foreach (Type type in assembly.GetTypes()) { attributes.AddRange( type.GetCustomAttributes(false) .OfType() .ToList()); } } Es un metadato que viene con un .NET dll indexado para que pueda hacer algo como: List attributes = typeof(SerializableAttribute) .GetClassesIAmDefinedOn(); ¿Hay otra […]

Añadir propiedades a un objeto con reflection en c #

Me gustaría crear un método que reciba 3 cadenas como parámetro y devolver un objeto que contenga tres propiedades que se refirieron a estas cadenas. No tiene un “Objeto antiguo” para replicar. Las propiedades deben ser creadas en este método. ¿Es hacer esto en C # con reflexión? ¿Si es así, cómo? A continuación es […]

Reflection.Emit: ¿Cómo convertir MethodBuilder a RuntimeMethodInfo de forma confiable?

Después de generar un tipo dinámicamente y llamar a TypeBuilder.CreateType, quiero crear un delegado que apunte a un método en el nuevo tipo. Pero si uso código como loadedType = typeBuilder.CreateType(); myDelegate = (MyDelegate)Delegate.CreateDelegate( typeof(MyDelegate), methodBuilder); Reutilizando methodBuilder como methodInfo, obtengo la excepción “MethodInfo debe ser un RuntimeMethodInfo”. Ahora normalmente puedo volver a adquirir el […]