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 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;
            }
        }