Exemple #1
0
        void Member_New(Member member, NewEventArgs e)
        {
            Type typeMemberType = MemberTypeManager.GetMemberTypeType(member.ContentType.Alias);

            foreach (PropertyInfo propInfo in typeMemberType.GetProperties(BindingFlags.Public | BindingFlags.Instance))
            {
                MemberTypePropertyAttribute propAttr = Util.GetAttribute <MemberTypePropertyAttribute>(propInfo);
                if (propAttr == null)
                {
                    continue; // skip this property - not part of a Member type
                }

                string propertyName;
                string propertyAlias;
                MemberTypeManager.ReadPropertyNameAndAlias(propInfo, propAttr, out propertyName, out propertyAlias);

                if (propAttr.DefaultValue != null)
                {
                    try
                    {
                        umbraco.cms.businesslogic.property.Property property = member.getProperty(propertyAlias);
                        property.Value = Convert.ChangeType(propAttr.DefaultValue, propInfo.PropertyType);
                    }
                    catch (Exception exc)
                    {
                        throw new Exception(string.Format("Cannot set default value ('{0}') for property {1}.{2}. Error: {3}",
                                                          propAttr.DefaultValue, typeMemberType.Name, propInfo.Name, exc.Message), exc);
                    }
                }
            }
        }
        public virtual T CreateAndPopulateTypedInstance <T>(Member member) where T : MemberTypeBase
        {
            T retVal = null;

            if (member != null)
            {
                Type typeMemberType = MemberTypeManager.GetMemberTypeType(member.ContentType.Alias);
                T    typedMember    = (T)CreateInstance(typeMemberType, new[] { member.LoginName, member.Email, member.Password });
                if (MemberHelper.PopuplateInstance <T>(member, typeMemberType, typedMember))
                {
                    retVal = typedMember;
                }
            }

            return(retVal);
        }
        public void Intercept(IInvocation invocation)
        {
            MemberTypeBase memberType = (MemberTypeBase)invocation.InvocationTarget;

            string propertyName = invocation.Method.GetPropertyName();

            if (invocation.Method.IsGetter())
            {
                if (memberType[propertyName] == null)
                {
                    Type         typeDocType = MemberTypeManager.GetMemberTypeType(memberType.Source.ContentType.Alias);
                    PropertyInfo propInfo    = typeDocType.GetProperty(propertyName);

                    object value = null;
                    try
                    {
                        value = MemberHelper.GetPropertyValue(memberType.Source, propInfo);
                        memberType[propertyName] = value;
                    }
                    catch (Exception exc)
                    {
                        throw new Exception(string.Format("Cannot set the value of a Member type property {0}.{1} (member type: {2}) to value: '{3}' (value type: {4}). Error: {5}",
                                                          typeDocType.Name, propInfo.Name, propInfo.PropertyType.FullName,
                                                          value, value != null ? value.GetType().FullName : "null", exc.Message));
                    }
                }

                invocation.ReturnValue = memberType[propertyName];
                if (invocation.ReturnValue == null && invocation.Method.ReturnType == typeof(bool))
                {
                    invocation.ReturnValue = false;
                }
            }
            else
            {
                memberType[propertyName] = invocation.Arguments[0];
            }
        }