Articles of reflection

Reflection Emit: como converter a instância de atributo para CustomAttributeBuilder ou CustomAttributeData

Fiz uma class de gerador que constrói uma class de proxy baseada na interface que implementa a interface. Veja minha postagem em Criar uma class de proxy com base na interface sem implementá-la . Estou familiarizado com CustomAttributeData.GetCustomAttributes(MemberInfo target) , usei-o quando li os membros da Interface e consegui importá-los para o proxy. Eu quero […]

Qual é a melhor maneira de definir uma propriedade estática que é definida uma vez por subclass?

Eu escrevi o seguinte aplicativo de console para testar as propriedades estáticas: using System; namespace StaticPropertyTest { public abstract class BaseClass { public static int MyProperty { get; set; } } public class DerivedAlpha : BaseClass { } public class DerivedBeta : BaseClass { } class Program { static void Main(string[] args) { DerivedBeta.MyProperty = […]

Reflexão e Design de Aplicações

Deixe-me descrever o problema e a solução que eu tenho atualmente e talvez você possa me ajudar a esclarecer porque é uma má idéia (supondo que seja) e o que eu posso fazer para torná-lo um sistema melhor. agora eu tenho 600 “rippers” que analisam arquivos e os copiam para csv ou outros formatos. Todos […]

Como encontrar o menor tipo atribuível em dois tipos (duplicado)?

Aqui estão dois methods de extensão para uso public static Type FindInterfaceWith(this Type type1, Type type2) { // returns most suitable common implemented interface } public static Type FindBaseClassWith(this Type type1, Type type2) { // returns most derivative of common base class } FindInterfaceWith retorna null se eles não tiverem uma interface comum implementada. FindBaseClassWith […]

c # Reflexão recursiva e listas genéricas definindo as propriedades padrão

Eu estou tentando usar a reflection para conseguir o seguinte: Eu preciso de um método onde eu passar em um object e este método instanciará recursivamente o object com objects filho e definir as propriedades com valores padrão. Eu preciso de todo o object instanciado indo tantos níveis quanto necessário. Esse método precisa ser capaz […]

Reflection.Emit: Como converter MethodBuilder para RuntimeMethodInfo de forma confiável?

Depois de gerar um tipo dinamicamente e chamando TypeBuilder.CreateType, eu quero criar um delegado que aponta para um método no novo tipo. Mas se eu usar código como loadedType = typeBuilder.CreateType(); myDelegate = (MyDelegate)Delegate.CreateDelegate( typeof(MyDelegate), methodBuilder); Reutilizando o methodBuilder como um methodInfo, recebo a exceção “MethodInfo deve ser um RuntimeMethodInfo”. Agora normalmente eu posso readquirir […]

C # Como verificar se um object é um array multidimensional

Eu sou um recém-chegado ao C #. Eu tenho um object em c #, como verificar se é uma matriz única ou 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 […]

O object PropertyInfo.SetValue não corresponde ao tipo de destino

Eu tenho um erro semelhante a este , mas infelizmente não é a mesma solução simples. Aqui está o 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 != […]

Limitando um comprimento de string em uma propriedade

Esta questão surgiu quando eu estava tentando descobrir um problema maior que, por simplicidade, estou omitindo. Eu tenho que representar uma certa estrutura de dados em c #. É um protocolo que será usado para se comunicar com um sistema externo. Como tal, tem uma seqüência de strings com comprimentos predefinidos e inteiros (ou outros […]

C # usando propriedades com tipos de valor com Delegate.CreateDelegate

Usando o artigo de Jon Skeet Making reflection fly e explorando delegates como um guia, estou tentando usar o método Delegate.CreateDelegate para duplicar propriedades como representantes. Aqui está um exemplo de class: public class PropertyGetter { public int Prop1 {get;set;} public string Prop2 {get;set;} public object GetPropValue(string propertyName) { var property = GetType().GetProperty(propertyName).GetGetMethod(); propertyDelegate = […]