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]));
        }
Esempio n. 3
0
        private static string GetSharedPropertyLocation(SharedAssemblies sa, string fullName, string propertyName)
        {
            var key = CodeMemberKey.CreatePropertyKey(fullName, propertyName);

            return(sa.GetSharedAssemblyPath(key));
        }