System.Runtime.Serialization.CodeGenerator.Call C# (CSharp) Method

Call() private method

private Call ( ConstructorInfo ctor ) : void
ctor System.Reflection.ConstructorInfo
return void
        internal void Call(ConstructorInfo ctor)
        {
            if (_codeGenTrace != CodeGenTrace.None)
                EmitSourceInstruction("Call " + ctor.ToString() + " on type " + ctor.DeclaringType.ToString());
            _ilGen.Emit(OpCodes.Call, ctor);
        }

Same methods

CodeGenerator::Call ( MethodInfo methodInfo ) : void
CodeGenerator::Call ( object thisObj, MethodInfo methodInfo ) : void
CodeGenerator::Call ( object thisObj, MethodInfo methodInfo, object param1 ) : void
CodeGenerator::Call ( object thisObj, MethodInfo methodInfo, object param1, object param2 ) : void
CodeGenerator::Call ( object thisObj, MethodInfo methodInfo, object param1, object param2, object param3 ) : void
CodeGenerator::Call ( object thisObj, MethodInfo methodInfo, object param1, object param2, object param3, object param4 ) : void
CodeGenerator::Call ( object thisObj, MethodInfo methodInfo, object param1, object param2, object param3, object param4, object param5 ) : void
CodeGenerator::Call ( object thisObj, MethodInfo methodInfo, object param1, object param2, object param3, object param4, object param5, object param6 ) : void

Usage Example

コード例 #1
0
            public XmlFormatClassReaderDelegate GenerateClassReader(ClassDataContract classContract)
            {
                _ilg = new CodeGenerator();
                bool memberAccessFlag = classContract.RequiresMemberAccessForRead(null);

                try
                {
                    _ilg.BeginMethod("Read" + classContract.StableName.Name + "FromXml", Globals.TypeOfXmlFormatClassReaderDelegate, memberAccessFlag);
                }
                catch (SecurityException securityException)
                {
                    if (memberAccessFlag)
                    {
                        classContract.RequiresMemberAccessForRead(securityException);
                    }
                    else
                    {
                        throw;
                    }
                }

                InitArgs();
                CreateObject(classContract);
                _ilg.Call(_contextArg, XmlFormatGeneratorStatics.AddNewObjectMethod, _objectLocal);
                InvokeOnDeserializing(classContract);
                LocalBuilder objectId = null;

                ReadClass(classContract);

                InvokeOnDeserialized(classContract);
                if (objectId == null)
                {
                    _ilg.Load(_objectLocal);

                    // Do a conversion back from DateTimeOffsetAdapter to DateTimeOffset after deserialization.
                    // DateTimeOffsetAdapter is used here for deserialization purposes to bypass the ISerializable implementation
                    // on DateTimeOffset; which does not work in partial trust.

                    if (classContract.UnderlyingType == Globals.TypeOfDateTimeOffsetAdapter)
                    {
                        _ilg.ConvertValue(_objectLocal.LocalType, Globals.TypeOfDateTimeOffsetAdapter);
                        _ilg.Call(XmlFormatGeneratorStatics.GetDateTimeOffsetMethod);
                        _ilg.ConvertValue(Globals.TypeOfDateTimeOffset, _ilg.CurrentMethod.ReturnType);
                    }
                    //Copy the KeyValuePairAdapter<K,T> to a KeyValuePair<K,T>.
                    else if (classContract.IsKeyValuePairAdapter)
                    {
                        _ilg.Call(classContract.GetKeyValuePairMethodInfo);
                        _ilg.ConvertValue(Globals.TypeOfKeyValuePair.MakeGenericType(classContract.KeyValuePairGenericArguments), _ilg.CurrentMethod.ReturnType);
                    }
                    else
                    {
                        _ilg.ConvertValue(_objectLocal.LocalType, _ilg.CurrentMethod.ReturnType);
                    }
                }
                return((XmlFormatClassReaderDelegate)_ilg.EndMethod());
            }
All Usage Examples Of System.Runtime.Serialization.CodeGenerator::Call