Esempio n. 1
0
        public void AddProperty(CodeGenerationContext context, MutablePropertyInfo property)
        {
            ArgumentUtility.CheckNotNull("context", context);
            ArgumentUtility.CheckNotNull("property", property);

            var getMethod = property.MutableGetMethod;
            var setMethod = property.MutableSetMethod;

            Assertion.IsTrue(getMethod == null || setMethod == null || getMethod.CallingConvention == setMethod.CallingConvention);

            var callingConvention   = (getMethod ?? setMethod).CallingConvention;
            var indexParameterTypes = property.GetIndexParameters().Select(p => p.ParameterType).ToArray();
            var propertyBuilder     = context.TypeBuilder.DefineProperty(
                property.Name, property.Attributes, callingConvention, property.PropertyType, indexParameterTypes);

            DefineCustomAttributes(propertyBuilder, property);

            if (getMethod != null)
            {
                propertyBuilder.SetGetMethod(context.MethodBuilders[getMethod]);
            }
            if (setMethod != null)
            {
                propertyBuilder.SetSetMethod(context.MethodBuilders[setMethod]);
            }
        }
Esempio n. 2
0
        public void Initialization_WriteOnly()
        {
            var property = new MutablePropertyInfo(_declaringType, _name, _attributes, getMethod: null, setMethod: _setMethod);

            Assert.That(property.MutableGetMethod, Is.Null);
            var actualIndexParameters = property.GetIndexParameters();

            Assert.That(actualIndexParameters, Has.Length.EqualTo(2));
            CheckParameter(actualIndexParameters[0], property, 0, _indexParameters[0].Name, _indexParameters[0].Type, _indexParameters[0].Attributes);
            CheckParameter(actualIndexParameters[1], property, 1, _indexParameters[1].Name, _indexParameters[1].Type, _indexParameters[1].Attributes);
        }
Esempio n. 3
0
        public void Initialization()
        {
            Assert.That(_property.DeclaringType, Is.SameAs(_declaringType));
            Assert.That(_property.MutableDeclaringType, Is.SameAs(_declaringType));
            Assert.That(_property.Name, Is.EqualTo(_name));
            Assert.That(_property.Attributes, Is.EqualTo(_attributes));
            Assert.That(_property.PropertyType, Is.SameAs(_type));
            Assert.That(_property.MutableGetMethod, Is.SameAs(_getMethod));
            Assert.That(_property.MutableSetMethod, Is.SameAs(_setMethod));

            var actualIndexParameters = _property.GetIndexParameters();

            Assert.That(actualIndexParameters, Has.Length.EqualTo(2));
            CheckParameter(actualIndexParameters[0], _property, 0, _indexParameters[0].Name, _indexParameters[0].Type, _indexParameters[0].Attributes);
            CheckParameter(actualIndexParameters[1], _property, 1, _indexParameters[1].Name, _indexParameters[1].Type, _indexParameters[1].Attributes);
        }