Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.WorkflowServices / System / Workflow / Activities / ContractMethodInfo.cs / 1305376 / ContractMethodInfo.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
#pragma warning disable 1634, 1691
namespace System.Workflow.Activities
{
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Net.Security;
using System.ServiceModel;
using System.Reflection;
internal sealed class ContractMethodInfo : MethodInfo
{
private Attribute[] attributes = null;
private ContractType declaringType;
private MethodAttributes methodAttributes;
private string name;
private ParameterInfo[] parameters;
private ParameterInfo returnParam = null;
internal ContractMethodInfo(ContractType declaringType, OperationInfo operationInfo)
{
if (declaringType == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("declaringType");
}
if (operationInfo == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("operationInfo");
}
if (string.IsNullOrEmpty(operationInfo.Name))
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("operationInfo",
SR2.GetString(SR2.Error_OperationNameNotSpecified));
}
this.declaringType = declaringType;
this.name = operationInfo.Name;
this.methodAttributes = MethodAttributes.Public |
MethodAttributes.Abstract |
MethodAttributes.Virtual;
SortedList localParameters =
new SortedList();
foreach (OperationParameterInfo operationParameterInfo in operationInfo.Parameters)
{
ContractMethodParameterInfo parameterInfo =
new ContractMethodParameterInfo(this, operationParameterInfo);
if (parameterInfo.Position == -1)
{
this.returnParam = parameterInfo;
}
else
{
localParameters.Add(parameterInfo.Position, parameterInfo);
}
}
this.parameters = new ParameterInfo[localParameters.Count];
foreach (ContractMethodParameterInfo paramInfo in localParameters.Values)
{
this.parameters[paramInfo.Position] = paramInfo;
}
if (this.returnParam == null)
{
OperationParameterInfo returnParameterInfo = new OperationParameterInfo();
returnParameterInfo.Position = -1;
returnParameterInfo.ParameterType = typeof(void);
this.returnParam = new ContractMethodParameterInfo(this, returnParameterInfo);
}
OperationContractAttribute operationContract = new OperationContractAttribute();
if (operationInfo.HasProtectionLevel && operationInfo.ProtectionLevel != null)
{
operationContract.ProtectionLevel = (ProtectionLevel) operationInfo.ProtectionLevel;
}
operationContract.IsOneWay = operationInfo.IsOneWay;
this.attributes = new Attribute[] { operationContract };
declaringType.AddMethod(this);
}
public override MethodAttributes Attributes
{
get
{
return this.methodAttributes;
}
}
public override Type DeclaringType
{
get
{
return this.declaringType;
}
}
public override RuntimeMethodHandle MethodHandle
{
get
{
#pragma warning suppress 56503
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
new NotImplementedException(SR2.GetString(SR2.Error_RuntimeNotSupported)));
}
}
public override string Name
{
get
{
return this.name;
}
}
public override Type ReflectedType
{
get
{
return this.declaringType;
}
}
public override ParameterInfo ReturnParameter
{
get
{
return this.returnParam;
}
}
public override Type ReturnType
{
get
{
if (this.returnParam == null)
{
return null;
}
return this.returnParam.ParameterType;
}
}
public override ICustomAttributeProvider ReturnTypeCustomAttributes
{
get
{
return this.ReturnType;
}
}
public override MethodInfo GetBaseDefinition()
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
new NotImplementedException());
}
public override object[] GetCustomAttributes(bool inherit)
{
return GetCustomAttributes(typeof(object), inherit);
}
public override object[] GetCustomAttributes(Type attributeType, bool inherit)
{
if (attributeType == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("attributeType");
}
return ServiceOperationHelpers.GetCustomAttributes(attributeType, this.attributes);
}
public override MethodImplAttributes GetMethodImplementationFlags()
{
return MethodImplAttributes.IL;
}
public override ParameterInfo[] GetParameters()
{
return this.parameters;
}
public override object Invoke(object obj,
BindingFlags invokeAttr,
Binder binder,
object[] parameters,
CultureInfo culture)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
new NotImplementedException(SR2.GetString(SR2.Error_RuntimeNotSupported)));
}
public override bool IsDefined(Type attributeType, bool inherit)
{
if (attributeType == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("attributeType");
}
return ServiceOperationHelpers.IsDefined(attributeType, attributes);
}
public override string ToString()
{
System.Workflow.Activities.ContractType.MemberSignature signature =
new ContractType.MemberSignature(this);
return signature.ToString();
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ButtonBase.cs
- ErasingStroke.cs
- CodeDOMProvider.cs
- XmlSerializationGeneratedCode.cs
- XmlSchemaSimpleTypeUnion.cs
- PromptStyle.cs
- EndPoint.cs
- AlternationConverter.cs
- EmptyImpersonationContext.cs
- SQLDoubleStorage.cs
- SinglePhaseEnlistment.cs
- FontConverter.cs
- PerformanceCounterCategory.cs
- WebPartActionVerb.cs
- CopyOnWriteList.cs
- MdImport.cs
- Material.cs
- ProgressBarHighlightConverter.cs
- UmAlQuraCalendar.cs
- ValueTypeFixupInfo.cs
- TextRenderingModeValidation.cs
- AsyncPostBackErrorEventArgs.cs
- XdrBuilder.cs
- DomainConstraint.cs
- MaskedTextBoxDesigner.cs
- NativeStructs.cs
- ControlCachePolicy.cs
- MembershipPasswordException.cs
- ActivityMarkupSerializer.cs
- StickyNoteAnnotations.cs
- SchemaDeclBase.cs
- MatcherBuilder.cs
- PageTheme.cs
- HtmlTableRow.cs
- DeclaredTypeElement.cs
- CompilerParameters.cs
- FormsAuthenticationCredentials.cs
- Point3D.cs
- ToolStripGrip.cs
- DetailsViewPagerRow.cs
- Viewport3DAutomationPeer.cs
- CustomCategoryAttribute.cs
- PropertyNames.cs
- TextMarkerSource.cs
- AuthenticatedStream.cs
- OleStrCAMarshaler.cs
- QilPatternVisitor.cs
- OAVariantLib.cs
- XmlProcessingInstruction.cs
- DefaultWorkflowSchedulerService.cs
- Exceptions.cs
- M3DUtil.cs
- ValueConversionAttribute.cs
- LiteralControl.cs
- SubMenuStyle.cs
- CharacterHit.cs
- TreeViewEvent.cs
- TriState.cs
- QueryOutputWriter.cs
- HtmlInputReset.cs
- DataSvcMapFile.cs
- LayoutUtils.cs
- DodSequenceMerge.cs
- TraceLevelStore.cs
- SqlCachedBuffer.cs
- Compiler.cs
- PropertyInformationCollection.cs
- DataServiceException.cs
- SchemaTableColumn.cs
- SoapAttributeOverrides.cs
- SectionVisual.cs
- FileDialogCustomPlace.cs
- CodeTypeParameter.cs
- GenericsNotImplementedException.cs
- manifestimages.cs
- DataBindingList.cs
- WsatAdminException.cs
- RuleSettingsCollection.cs
- BooleanStorage.cs
- PerformanceCounterPermissionEntry.cs
- Point4DValueSerializer.cs
- OperationFormatter.cs
- StringFunctions.cs
- MaterialGroup.cs
- WindowsSlider.cs
- AlphabeticalEnumConverter.cs
- RelatedPropertyManager.cs
- COM2IProvidePropertyBuilderHandler.cs
- DetailsViewModeEventArgs.cs
- CompleteWizardStep.cs
- RedirectionProxy.cs
- IdleTimeoutMonitor.cs
- TcpAppDomainProtocolHandler.cs
- VScrollProperties.cs
- XmlSchemaObjectTable.cs
- CodeAttributeArgumentCollection.cs
- DbConnectionPoolGroup.cs
- ToolStripRendererSwitcher.cs
- RegexStringValidator.cs
- MouseWheelEventArgs.cs