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