---
title: "Property-namn utan reflection?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/178326-property-namn-utan-reflection"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Lukaspojken"
published: "2009-04-28T12:15:10.000Z"
updated: "2009-04-28T13:57:02.000Z"
replies: 3
views: 338
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/178326-property-namn-utan-reflection"
---

# Property-namn utan reflection?

## #1 — Lukaspojken, 2009-04-28T12:15Z

Kan man hämta property-namnet för ett objekt utan reflection?

Om jag tex har ett customer-objekt med propertyn FirstName då skulle jag vilja göra något i stil med:

string propertyName = customer.FirstName.GetPropertyName();

Finns det någon sådan inbyggd metod i .NET för jag vill undvika att hårdkoda likt detta:

string propertyName = customer.GetType().GetProperty("FirstName")

Permalänk: https://www.webforum.nu/p/178326

## #2 — Lukaspojken, 2009-04-28T13:27Z

Detta har jag hittills kommit fram till:

```
        string propertyName = GetName(() => customer.FirstName);

        public static string GetName(Expression<Func<object>> property)
        {
            return property.Body.ToString().Split('.').Last();
        }
```

Anropet är dock inte så användarvänligt. Finns det något bättre sätt?

Permalänk: https://www.webforum.nu/p/2183411

## #3 — Phorpher, 2009-04-28T13:40Z

Din lösning liknar den som Jon Skeet mfl. föreslår på stackoverflow: <http://stackoverflow.com/questions/301809/workarounds-for-nameof-operator-in-c-typesafe-databinding/301957#301957>

Det är nog så bra du kan få det utan en nameof-operator.

Permalänk: https://www.webforum.nu/p/2183412

## #4 — Lukaspojken, 2009-04-28T13:57Z

Ok, tack för tipset! GetName-metoden blev lite snyggare genom att kombinera de båda lösningarna. Slutresultatet blev denna:

         public static string GetName(Expression\<Func\<object\>\> property)  
         {  
             var body = property.Body as MemberExpression;   
             if (body == null)  
                 throw new ArgumentException("'expression' should be a member expression");   
             return body.Member.Name;  
         } 

Det jag vill åstadkomma är tex detta:
customer.FirstName = dataReader\[GetName(() =\> customer.FirstName)\].ToString();

Finns det något bättre sätt att lösa det? Är tex attribut-mappning på objektet mer att föredra?

Permalänk: https://www.webforum.nu/p/2183414

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/178326-property-namn-utan-reflection
