public void CodeMemberKey_Property_Key() { // Form the name based key CodeMemberKey key = CodeMemberKey.CreatePropertyKey(typeof(TestEntity).AssemblyQualifiedName, "TheValue"); Assert.IsNotNull(key, "CreateTypeKey using name failed"); Assert.AreEqual(key.TypeName, typeof(TestEntity).AssemblyQualifiedName, "TypeName property get different than ctor"); Type t = key.Type; Assert.AreEqual(typeof(TestEntity), t, "CodeMemberKey.Type failed to load type from name"); PropertyInfo propInfo = key.PropertyInfo; Assert.IsNotNull(propInfo, "CodeMemberKey.PropertyInfo failed to get real property info."); Assert.AreEqual("TheValue", propInfo.Name, "incorrect property info name"); // Form the type-based key CodeMemberKey key2 = CodeMemberKey.CreatePropertyKey(typeof(TestEntity).GetProperty("TheValue")); Assert.IsNotNull(key2, "CreateTypeKey using property failed"); Assert.AreEqual(key2.TypeName, typeof(TestEntity).AssemblyQualifiedName, "TypeName property get different than ctor"); t = key2.Type; Assert.AreEqual(typeof(TestEntity), t, "CodeMemberKey.Type failed to load type from name"); propInfo = key2.PropertyInfo; Assert.IsNotNull(propInfo, "CodeMemberKey.PropertyInfo failed to get real property info."); Assert.AreEqual("TheValue", propInfo.Name, "incorrect property info name"); // These keys should be the same Assert.AreEqual(key.GetHashCode(), key2.GetHashCode(), "CodeMemberKeys from property should have yielded same hash"); Assert.AreEqual(key, key2); }
public CodeMemberShareKind GetPropertyShareKind(string typeName, string propertyName) { CodeMemberKey key = CodeMemberKey.CreatePropertyKey(typeName, propertyName); PropertyInfo propertyInfo = key.PropertyInfo; if (propertyInfo == null) { return(CodeMemberShareKind.NotShared); } MethodBase method = propertyInfo.GetGetMethod(); return(GetMethodShareKind(typeName, method.Name, new string[0])); }
private static string GetSharedPropertyLocation(SharedAssemblies sa, string fullName, string propertyName) { var key = CodeMemberKey.CreatePropertyKey(fullName, propertyName); return(sa.GetSharedAssemblyPath(key)); }