Articles of reflection

Como o método Java retorna uma lista genérica de qualquer tipo?

Eu gostaria de escrever um método que retornaria um java.util.List de qualquer tipo sem a necessidade de typecast qualquer coisa : List users = magicalListGetter(User.class); List vehicles = magicalListGetter(Vehicle.class); List strings = magicalListGetter(String.class); Como seria a assinatura do método? Algo assim, talvez (?): public List< ?> magicalListGetter(Class clazz) { List list = doMagicalVooDooHere(); return list; […]

Por que não existe um operador `fieldof` ou` methodof` em C #?

Eles poderiam ser usados ​​da seguinte maneira: FieldInfo field = fieldof(string.Empty); MethodInfo method1 = methodof(int.ToString); MethodInfo method2 = methodof(int.ToString(IFormatProvider)); fieldof poderia ser compilado para IL como: ldtoken call FieldInfo.GetFieldFromHandle methodof poderia ser compilado para IL como: ldtoken call MethodBase.GetMethodFromHandle Sempre que o operador typeof é usado, você obtém resultados perfeitos de Localizar todas as referências. […]

Por que algumas expressões C # lambda são compiladas para methods estáticos?

Como você pode ver no código abaixo, declarei um object Action como uma variável. Alguém por favor me avise por que esse delegado de método de ação se comporta como um método estático? Por que isso retorna true no código a seguir? Código: public static void Main(string[] args) { Action actionMethod = s => { […]

Como resolver InaccessibleObjectException (“Não é possível tornar {member} acessível: o módulo {A} não ‘abre {package}’ para {B}”) no Java 9?

Essa exceção ocorre em uma ampla variedade de cenários ao executar um aplicativo no Java 9. Determinadas bibliotecas e estruturas (Spring, Hibernate, JAXB) são particularmente propensas a isso. Aqui está um exemplo do Javassist: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not “opens java.lang” to unnamed module @1941a8ff […]

Encontre dinamicamente a class que representa um tipo Java primitivo

Eu preciso fazer algumas chamadas de método reflexivo em Java. Essas chamadas includeão methods que possuem argumentos que são tipos primitivos (int, double, etc.). A maneira de especificar esses tipos ao pesquisar o método de forma reflexiva é int.class, double.class, etc. O desafio é que estou aceitando a input de uma fonte externa que especificará […]

Como levantar o evento PropertyChanged sem usar o nome da string

Seria bom ter capacidade de levantar o evento ‘PropertyChanged’ sem especificar explicitamente o nome da propriedade alterada. Eu gostaria de fazer algo assim: public string MyString { get { return _myString; } set { ChangePropertyAndNotify(val=>_myString=val, value); } } private void ChangePropertyAndNotify(Action setter, T value) { setter(value); PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { […]

Eu quero pegar o tipo de uma variável em tempo de execução

Eu quero pegar o tipo de uma variável em tempo de execução. Como eu faço isso?

Descobrindo tipos derivados usando reflection

Usando a reflection, é possível descobrir todos os tipos que derivam de um determinado tipo? Presumivelmente, o escopo seria limitado a um único conjunto.

Como obter um valor de propriedade usando a reflection

Eu tenho o seguinte código: FieldInfo[] fieldInfos; fieldInfos = GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance); O que estou tentando fazer é obter o valor de uma das minhas propriedades da instância instanciada atual em tempo de execução usando reflection. Como posso fazer isso?

Obtendo um System.Type do nome parcial do tipo

Eu quero obter um System.Type dado apenas o nome do tipo em uma string . Por exemplo, se eu tiver um object: MyClass abc = new MyClass(); Eu posso então dizer: System.Type type = abc.GetType(); Mas e se tudo que eu tenho é: string className = “MyClass”;