Stetic.ProjectGeneratorContext.GenerateInstanceExpression C# (CSharp) Method

GenerateInstanceExpression() public method

public GenerateInstanceExpression ( ObjectWrapper wrapper, System.CodeDom.CodeExpression newObject ) : System.CodeDom.CodeExpression
wrapper ObjectWrapper
newObject System.CodeDom.CodeExpression
return System.CodeDom.CodeExpression
        public override CodeExpression GenerateInstanceExpression(ObjectWrapper wrapper, CodeExpression newObject)
        {
            string typeName = wrapper.WrappedTypeName;
            string memberName = null;
            if (wrapper is Wrapper.Widget)
                memberName = ((Wrapper.Widget) wrapper).Wrapped.Name;
            else if (wrapper is Wrapper.Action)
                memberName = ((Wrapper.Action) wrapper).Name;

            if (memberName == null)
                return base.GenerateInstanceExpression (wrapper, newObject);

            if (Options.UsePartialClasses) {
                // Don't generate fields for top level widgets and for widgets accessible
                // through other widget's properties
                Wrapper.Widget ww = wrapper as Wrapper.Widget;
                if (ww == null || (!ww.IsTopLevel && ww.InternalChildProperty == null && !ww.Unselectable)) {
                    type.Members.Add (
                        new CodeMemberField (
                            typeName,
                            memberName
                        )
                    );
                    CodeExpression var = new CodeFieldReferenceExpression (
                                              new CodeThisReferenceExpression (),
                                              memberName
                    );

                    Statements.Add (
                        new CodeAssignStatement (
                            var,
                            newObject
                        )
                    );
                    return var;
                }
                else
                    return base.GenerateInstanceExpression (wrapper, newObject);
            } else {
                CodeExpression var = base.GenerateInstanceExpression (wrapper, newObject);
                Statements.Add (
                    new CodeAssignStatement (
                        new CodeIndexerExpression (
                            new CodeVariableReferenceExpression ("bindings"),
                            new CodePrimitiveExpression (memberName)
                        ),
                        var
                    )
                );
                return var;
            }
        }