Example #1
0
        public SSInterpretPropertyInfo AddProperty(string id, BasePropertyDeclarationSyntax property)
        {
            var propertyInfo = new SSInterpretPropertyInfo(this, Runner, id, property)
            {
                IsStatic       = property.Modifiers.IsStatic(),
                DeclaringClass = this,

                AccessModifier = AccessModifierParser.Parse(property.Modifiers)
            };

            Properties.Add(id, propertyInfo);
            return(propertyInfo);
        }
        private void InitializeStaticProperty(SSInterpretPropertyInfo info)
        {
            if (info.HasBackingField == false)
            {
                return;
            }

            var backingField = info.BackingField;

            if (info.Initializer == null)
            {
                Globals.SetStaticField(Klass, backingField.Id, info.Type.GetDefault());
            }
            else
            {
                var capturedKlass = Klass;
                AddLazyInitializer(() =>
                {
                    Globals.SetStaticField(
                        capturedKlass,
                        backingField.Id, RunExpression(info.Initializer.Value));
                });
            }
        }