DeclareLocal() 공개 메소드

public DeclareLocal ( Type localType, bool pinned ) : LocalBuilder
localType System.Type
pinned bool
리턴 LocalBuilder
		private void GenerateMethod(TypeBuilder type, MethodMetadata methodMetadata)
		{
			if(type == null)
				throw new ArgumentNullException("type");

			if(methodMetadata == null)
				throw new ArgumentNullException("methodMetadata");

			var attrs = MethodAttributes.Public | MethodAttributes.Virtual | MethodAttributes.HideBySig;
			var callingConvenction = CallingConventions.HasThis;
			var parameters = methodMetadata.Parameters.Select(x => x.Type).ToArray();

			var method = type.DefineMethod(methodMetadata.Name, attrs, callingConvenction, methodMetadata.ReturnType, parameters);

			var il = method.GetILGenerator();
			var g = new DynamicILGenerator(il);

			foreach(var parameter in methodMetadata.Parameters)
				method.DefineParameter(parameter.Position, ParameterAttributes.None, parameter.Name);

			foreach(var local in methodMetadata.Block.Locals)
				g.DeclareLocal(local);

			foreach(var line in methodMetadata.Block.Lines)
				this.GenerateLine(g, line);
		}