Stetic.ObjectWrapper.GeneratePropertySet C# (CSharp) Method

GeneratePropertySet() protected method

protected GeneratePropertySet ( GeneratorContext ctx, System.CodeDom.CodeExpression var, PropertyDescriptor prop ) : void
ctx GeneratorContext
var System.CodeDom.CodeExpression
prop PropertyDescriptor
return void
        protected virtual void GeneratePropertySet(GeneratorContext ctx, CodeExpression var, PropertyDescriptor prop)
        {
            object oval = prop.GetValue (Wrapped);
            if (oval == null || (prop.HasDefault && prop.IsDefaultValue (oval)))
                return;

            CodeExpression val = ctx.GenerateValue (oval, prop.RuntimePropertyType, prop.Translatable && prop.IsTranslated (Wrapped));
            CodeExpression cprop;

            TypedPropertyDescriptor tprop = prop as TypedPropertyDescriptor;
            if (tprop == null || tprop.GladeProperty == prop) {
                cprop = new CodePropertyReferenceExpression (var, prop.Name);
            } else {
                cprop = new CodePropertyReferenceExpression (var, tprop.GladeProperty.Name);
                cprop = new CodePropertyReferenceExpression (cprop, prop.Name);
            }
            ctx.Statements.Add (new CodeAssignStatement (cprop, val));
        }