public void Test_GetShortTypeName() { const string aqtn = @"System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"; Assert.AreEqual(string.Empty, ReflectionMethods.GetShortTypeName(null)); Assert.AreEqual(string.Empty, ReflectionMethods.GetShortTypeName(string.Empty)); Assert.AreEqual("ClassName", ReflectionMethods.GetShortTypeName("ClassName")); Assert.AreEqual("ExceptionMessage", ReflectionMethods.GetShortTypeName("Namespace1.Namespace2.ExceptionMessage")); Assert.AreEqual("SqlMembershipProvider", ReflectionMethods.GetShortTypeName(aqtn)); }
public static IEnumerable <AttachedPropertyInfo> GetAttachedProperties(BindableObject obj) { var apis = new List <AttachedPropertyInfo>(); var dps = obj .GetType() .GetFields(BindingFlags.Static | BindingFlags.Public) .Where(t => t.FieldType.IsAssignableFrom(typeof(BindableProperty))) .ToArray(); foreach (var dp in dps) { if (!dp.Name.EndsWith("Property", StringComparison.CurrentCultureIgnoreCase)) { continue; } var index = dp.Name.LastIndexOf("Property", StringComparison.CurrentCultureIgnoreCase); var shortName = dp.Name.Substring(0, index); var getMethod = obj.GetType().GetMethod("Get" + shortName); var setMethod = obj.GetType().GetMethod("Set" + shortName); if (getMethod != null && setMethod != null) { var typeName = ReflectionMethods.GetShortTypeName(obj.GetType().FullName); var api = new AttachedPropertyInfo { PropertyName = dp.Name, XamlPropertyName = $"{typeName}.{shortName}", Value = getMethod.Invoke(null, new object[] { obj }), Field = dp, GetMethod = getMethod, SetMethod = setMethod, Target = obj }; apis.Add(api); } } return(apis.ToArray()); }