Wij hadden ook zo'n soort constructie en die was wel langzamer dan de gewoon strings.Woy schreef op woensdag 07 maart 2012 @ 10:27:
Wat is "een stuk langzamer"? Heb je daadwerkelijk wel een performance issues gehad door deze constructie? Ik kan het me bijna niet voorstellen.
Wij gebruikte zoiets als:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| public class PropertyOf<T> { public static string Resolve(Expression<Func<T, object>> expression ) { Expression candidate = null; if (expression.Body is UnaryExpression) candidate = (expression.Body as UnaryExpression).Operand; if (expression.Body is MemberExpression) candidate = expression.Body; return (candidate as MemberExpression).Member.Name; } } |
En dan in de property:
C#:
1
| OnPropertyChanged(PropertyOf<SomeViewModel>.Resolve(x => x.SomeProperty)); |
Ik heb de benchmarks niet meer maar volgens mij was die constructie wel langzamer (Je merkte er weinig van hoor en het was voor ons beter dan magic strings
Nothing to see here!