private void EmitIL(AssemblyBuilder assemblyBuilder, ModuleBuilder moduleBuilder) { // Create a new type object for the the field accessor class. EmitType(moduleBuilder); // Create a new instance _emittedSetter = assemblyBuilder.CreateInstance("SetFor" + _targetType.FullName + _fieldName) as ISetter; this.nullInternal = this.GetNullInternal(_fieldType); if (_emittedSetter == null) { throw new NotSupportedException( string.Format("Unable to create a set field accessor for '{0}' field on class '{0}'.", _fieldName, _fieldType)); } }
/// <summary> /// This method create a new type oject for the the property accessor class /// that will provide dynamic access. /// </summary> /// <param name="assemblyBuilder">The assembly builder.</param> /// <param name="moduleBuilder">The module builder.</param> private void EmitIL(AssemblyBuilder assemblyBuilder, ModuleBuilder moduleBuilder) { // Create a new type object for the the field accessor class. EmitType(moduleBuilder); // Create a new instance _emittedSet = assemblyBuilder.CreateInstance("SetFor" + _targetType.FullName + _propertyName) as ISet; nullInternal = GetNullInternal(_propertyType); if (_emittedSet == null) { throw new NotSupportedException( string.Format("Unable to create a get propert accessor for '{0}' property on class '{1}'.", _propertyName, _propertyType)); } }
private T CreateInstance <T>(System.Reflection.Emit.AssemblyBuilder assembly, string className, Object[] args) { return((T)assembly.CreateInstance(className, false, BindingFlags.CreateInstance, null, args, null, null)); }