Ejemplo n.º 1
0
        private IPropertyMember InitializeResourceManager()
        {
            //Declare the resource manager field.
            this.resourceManagerDataMember = this.Fields.AddNew(new TypedName("_resourceManager", typeof(ResourceManager)));
            //The property...
            this.resourceManager = this.Properties.AddNew(new TypedName("ResourceManager", resourceManagerDataMember.FieldType), true, false);
            //Full resolution.
            resourceManagerDataMember.FieldType.ResolutionOptions = TypeReferenceResolveOptions.GlobalType;
            IFieldReferenceExpression resourceManagerDataMemberRef = resourceManagerDataMember.GetReference();
            //Check if it's null,
            IConditionStatement ics = resourceManager.GetPart.IfThen((Expression.Expression)resourceManagerDataMemberRef == PrimitiveExpression.NullValue);

            //If it is and the parent is a namespace, then use the assembly's resource.
            if (this.ParentTarget is INameSpaceDeclaration || this.parentTarget is IIntermediateProject)
            {
                ics.Assign(resourceManagerDataMemberRef, new CreateNewObjectExpression(resourceManagerDataMember.FieldType, new PrimitiveExpression("Resources"), (new TypeOfExpression(this)).GetProperty("Assembly")));
            }
            //Otherwise the resource is for the contianing type.
            else if (this.parentTarget is IDeclaredType)
            {
                ics.Assign(resourceManagerDataMemberRef, new CreateNewObjectExpression(resourceManagerDataMember.FieldType, new TypeOfExpression(this)));
            }
            //Yield the return of the data member.
            resourceManager.GetPart.Return(resourceManagerDataMemberRef);
            return(this.resourceManager);
        }
Ejemplo n.º 2
0
 public void ReferenceDeclaration(IFieldMember declaration)
 {
     if (declaration is IIntermediateFieldMember)
     {
         this.ReferenceDeclaration((IIntermediateFieldMember)declaration);
     }
     else
     {
         this.Formatter.ReferenceDeclaration(declaration);
     }
 }
Ejemplo n.º 3
0
 public void Dispose()
 {
     if (this.autoMember != null)
     {
         this.autoMember.Dispose();
         this.autoMember = null;
     }
     if (this.dataMember != null)
     {
         this.dataMember.Dispose();
         this.dataMember = null;
     }
     if (this.declarationTarget != null)
     {
         this.declarationTarget = null;
     }
     this.namePrimitive = null;
     this.name          = null;
     this.value         = null;
 }
Ejemplo n.º 4
0
        public void Rebuild()
        {
            if (this.autoMember != null)
            {
                this.declarationTarget.Properties.Remove(this.autoMember);
                this.autoMember.Dispose();
            }
            if (this.dataMember != null)
            {
                this.declarationTarget.Fields.Remove(this.dataMember);
                this.dataMember.Dispose();
            }
            switch (this.declarationTarget.GenerationType)
            {
            case ResourceGenerationType.GeneratedClass:
                this.autoMember             = declarationTarget.Properties.AddNew(new TypedName(name, typeof(string)), true, false);
                this.autoMember.AccessLevel = DeclarationAccessLevel.Internal;
                this.namePrimitive          = new PrimitiveExpression(name);
                this.autoMember.GetPart.Return(declarationTarget.ResourceManager.GetReference().GetMethod("GetString").Invoke(namePrimitive));
                break;

            case ResourceGenerationType.GeneratedClassWithCache:
                this.dataMember             = declarationTarget.Fields.AddNew(new TypedName(string.Format("__{0}_dm_", name), typeof(string)));
                this.autoMember             = declarationTarget.Properties.AddNew(new TypedName(name, typeof(string)), true, false);
                this.dataMember.IsStatic    = true;
                this.autoMember.IsStatic    = true;
                this.dataMember.AccessLevel = DeclarationAccessLevel.Private;
                this.autoMember.AccessLevel = DeclarationAccessLevel.Internal;
                IFieldReferenceExpression dataMemberReference = dataMember.GetReference();
                IConditionStatement       ics = this.autoMember.GetPart.IfThen((Expression.Expression)dataMemberReference == PrimitiveExpression.NullValue);
                this.namePrimitive = new PrimitiveExpression(name);
                ics.Assign(dataMemberReference, declarationTarget.ResourceManager.GetReference().GetMethod("GetString").Invoke(namePrimitive));
                this.autoMember.GetPart.Return(dataMemberReference);
                break;

            default:
                break;
            }
        }
Ejemplo n.º 5
0
 public void ReferenceDeclaration(IFieldMember declaration)
 {
 }
Ejemplo n.º 6
0
 public abstract void TranslateMember(IFieldMember fieldMember);
Ejemplo n.º 7
0
 public override void TranslateMember(IFieldMember fieldMember)
 {
     this.Provider.GenerateCodeFromMember(fieldMember.GenerateCodeDom(this.Options), base.Target, this.Options.Options);
 }
Ejemplo n.º 8
0
 public void ReferenceDeclaration(IFieldMember declaration)
 {
     referenceStack.Push(declaration);
 }