KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Here is my code: public class UserPreferences { /// <summary> /// The EMail signature. /// </summary> [UserPreferenceProperty(Category = "Email", DefaultValue = "My default value")] public static string Signature { get { return UserPreferenceManager.GetValue(); } set { UserPreferenceManager.SetValue(value); } } } public static string GetValue() { if (((VTXPrincipal)Thread.CurrentPrincipal).VTXIdentity.OperatorID == null) { throw new Exception("Missing Operator ID"); } string value = string.Empty; var frame = new StackFrame(1); ***** <------ problem here..... var property = frame.GetMethod(); var propertyname = property.Name.Split('_')[1]; var type = property.DeclaringType; ***** <------ problem here..... if (type != null) { var userPreference = typeof(UserPreferences).GetProperty(propertyname).GetCustomAttributes(true).FirstOrDefault() as UserPreferencePropertyAttribute; if (userPreference != null) { string category = userPreference.Category; string description = propertyname; value = GetValue(category, description, ((VTXPrincipal)Thread.CurrentPrincipal).VTXIdentity.OperatorID); if (value == null) { // always return something return userPreference.DefaultValue; } } else { throw new Exception("Missing User Preference"); } } return value; } Inside the GetValue method, StackFrame works differently in release mode vs. debug mode. In debug mode, I correctly get the property name as signature But in Release mode, property name is GetUserPreferenceValueTest because this is the test method that makes the calls as clients. There fore my code works in debug mode b
Tags (comma-separated)
Save Edits
Cancel