Articles of reflection

Creare una raccolta di tutte le classi che ereditano da IBlahblah

Usando la riflessione (sto indovinando?), È ansible creare un metodo che restituirà una collezione di tutti gli oggetti che ereditano da un’interfaccia chiamata IBlahblah? public interface IBlahblah;

Riflessione: ottieni FieldInfo da PropertyInfo

Sto facendo un po ‘di generazione di codice dinamico usando Reflection, e mi sono imbattuto in una situazione in cui ho bisogno di ottenere il backing field di una proprietà (se ne ha una) per poter usare il suo object FieldInfo. Ora, so che puoi usare .IsDefined(typeof(CompilerGeneratedAttribute), false); su un FieldInfo per scoprire se è […]

Come richiamare IDBSet .FirstOrDefault (predicato) utilizzando la reflection?

dato un IDbSet dove Person contiene una proprietà “Id”, come posso eseguire genericamente il seguente comando: var p = PersonDbSet.FirstOrDefault(i=>i.Id = 3); Posso creare il predicato e ottenere un riferimento al metodo di estensione FirstOrDefault, ma non riesco a metterlo insieme: Prima il predicato ParameterExpression parameter = Expression.Parameter(entityType, “Id”); MemberExpression property = Expression.Property(parameter, 3); ConstantExpression […]

Come eseguire le operazioni di riflessione usando Roslyn

Vorrei eseguire operazioni con lo stile di riflessione sulla seguente class usando Roslyn: public abstract class MyBaseClass { public bool Method1() { return true; } public bool Method2() { return true; } public void Method3() { } } Fondamentalmente voglio farlo, ma con Roslyn: BindingFlags flags = BindingFlags.Public | BindingFlags.Instance; MethodInfo[] mBaseClassMethods = typeof(MyBaseClass).GetMethods(flags); foreach […]

Riesci a capire se a un campo C # è stato assegnato un valore predefinito?

Supponi di avere una dichiarazione di class, ad esempio: class MyClass { int myInt=7; int myOtherInt; } Ora, c’è un modo nel codice generico, usando la riflessione (o qualsiasi altro mezzo, per quella materia), che posso dedurre che myInt ha un valore predefinito assegnato, mentre myOtherInt no? Notare la differenza tra l’inizializzazione con un valore […]

Stessi nomi variabili – 2 classi diverse – Come copiare i valori da uno all’altro – Riflessione – C #

Senza usare AutoMapper … (perché qualcuno che si occupa di questo progetto cagherà dei mattoni quando vedranno le dipendenze) Ho una class (class A) con molte proprietà. Ho un’altra class (class B) con le stesse proprietà (stesso nome e tipo). La Classe B potrebbe anche avere altre variabili non correlate. Esiste un semplice codice di […]

Come eseguire iterazioni su tutte le proprietà di un object in C #?

Sono nuovo di C #, voglio scrivere una funzione per iterare sulle proprietà di un object e impostare tutte le stringhe null a “”. Ho sentito che è ansible usare qualcosa chiamato “Reflection” ma non so come. Grazie

Annotazione dati “Visualizza nome” per class utilizzando c #

Ho una class con [Display(Name =”name”)] impostato nelle proprietà e [Table(“tableName”] nella parte superiore della class. Ora sto usando la reflection per ottenere alcune informazioni di questa class e mi chiedo se in qualche modo potrò aggiungere un [Display(Name =”name”)] alla class stessa. Sarà qualcosa di simile [Table(“MyObjectTable”)] [Display(Name =”My Class Name”)] <————– New Annotation […]

Converti func per predicate usando reflection in C #

In pratica sto provando a farlo, ma non so cosa sarà T, quindi sto costruendo le cose usando gli alberi di Reflection ed Expression. // Input (I don’t know about “Book”) Type itemType = typeof(Book); // Actual Code // Build up func p => p.AuthorName == “Jon Skeet” ParameterExpression predParam = Expression.Parameter(itemType, “p”); Expression left […]

TypeDescriptor.GetProperties vs. Type.GetProperties

Sto guardando un codice in cui un autore MSDN utilizza quanto segue in diversi metodi della stessa class: if ( TypeDescriptor.GetProperties(ModelInstance)[propertyName] != null ) return; var property = ModelInstance.GetType().GetProperty(propertyName); Useresti la prima perché è più veloce e hai solo bisogno di interrogare una proprietà e quest’ultima se hai bisogno di manipolarla? Qualcos’altro?