private MethodDef(IMethodDef original, string name = null, string returnType = null, XmlElement summary = null, XmlElement returnDescription = null, IException exception = null, ReadOnlyCollection <GenericArg> genericArgs = null, ReadOnlyCollection <Parameter> parameters = null, XmlElement bodyElement = null, XmlElement syncBodyElement = null, XmlElement asyncBodyElement = null, XmlElement syncAsyncBodyElement = null, XmlElement streamBodyElement = null, XmlElement tokenBodyElement = null, string overload = null, bool?needsStream = null, bool?streamSerial = null, bool?needsAsync = null, TokenMode tokenMode = TokenMode.None) { methodDefXml = original.GetMethodDefXml(); Name = name ?? original.Name; ReturnType = returnType ?? original.ReturnType; Summary = summary ?? original.Summary; ReturnDescription = returnDescription ?? original.ReturnDescription; Exception = exception ?? (original.Exception != null ? new Exception(original.Exception) : null); GenericArgs = genericArgs != null && genericArgs.Count > 0 ? genericArgs : original.GenericArgs?.Select(a => new GenericArg(a)).ToReadOnlyList(); Parameters = parameters != null && parameters.Count > 0 ? parameters : original.Parameters?.Select(p => new Parameter(p)).ToReadOnlyList(); BodyElement = bodyElement ?? (XmlElement)original.BodyElement?.CloneNode(true); SyncBodyElement = syncBodyElement ?? (XmlElement)original.SyncBodyElement?.CloneNode(true); AsyncBodyElement = asyncBodyElement ?? (XmlElement)original.AsyncBodyElement?.CloneNode(true); SyncAsyncBodyElement = syncAsyncBodyElement ?? (XmlElement)original.SyncAsyncBodyElement?.CloneNode(true); StreamBodyElement = streamBodyElement ?? (XmlElement)original.StreamBodyElement?.CloneNode(true); TokenBodyElement = tokenBodyElement ?? (XmlElement)original.TokenBodyElement?.CloneNode(true); Overload = overload ?? original.Overload; NeedsStream = needsStream.HasValue ? needsStream.Value : original.NeedsStream; NeedsAsync = needsAsync.HasValue ? needsAsync.Value : original.NeedsAsync; TokenMode = tokenMode != TokenMode.None ? tokenMode : original.TokenMode; }
public MethodDef(MethodDefXml methodDefXml) : this(methodDefXml, name : null) { }