Obtenir la propriété nom et le type à l'aide d'expressions lambda
Je suis en train d'écrire une fonction qui va tirer le nom d'une propriété et le type à l'aide de la syntaxe comme ci-dessous:
private class SomeClass
{
Public string Col1;
}
PropertyMapper<Somewhere> propertyMapper = new PropertyMapper<Somewhere>();
propertyMapper.MapProperty(x => x.Col1)
Est-il possible de transmettre la propriété grâce à la fonction sans apporter de modifications majeures à cette syntaxe?
Je voudrais obtenir le nom de la propriété et de la propriété type.
Ainsi dans l'exemple ci-dessous je voudrais récupérer
Name = "Col1"
et Type = "System.String"
Peut aider quelqu'un?
- Quelle est l'image plus grande? Pourquoi ne pas simplement passer "Col1" comme un nom de chaîne et utiliser la réflexion pour trouver que membre? Ce qui motive le lambda?
- Je suis en train de travailler sur une maison de l'ORM pour mon travail. Je veux facilement en charge la modification des noms de propriété sans avoir à rechercher la chaîne de tous sur la place, en plus de lui donner (à mon avis) une syntaxe propre
Vous devez vous connecter pour publier un commentaire.
Ici suffit d'un exemple d'utilisation de Les Expressions pour obtenir le nom d'une propriété ou un terrain pour vous aider à démarrer:
D'appeler le code devrait ressembler à ceci:
Un mot d'avertissement, cependant: la simple déclaration de
(Program p) => p.Name
implique, en réalité, tout à fait un peu de travail (et peut prendre des quantités mesurables de temps). Envisager la mise en cache le résultat plutôt que d'appeler la méthode fréquemment.J'ai trouvé cela très utile.
J'ai fait cette petite classe afin de suivre la demande d'origine.
Si vous avez besoin du nom de la propriété que vous pouvez l'utiliser comme ceci:
J'ai juste pensé que je voudrais mettre cette question ici de construire sur l'approche précédente.
Vous pouvez ensuite appeler cela de la manière suivante:
Je dois également souligner que VS 2015 et C# 6.0, vous pouvez simplement utiliser nameof.
https://msdn.microsoft.com/en-us/library/dn986596.aspx
Cela peut être fait facilement en C# 6. Pour obtenir le nom d'usage d'un bien nameof opérateur.
et pour obtenir le type d'usage de biens opérateur typeof.