Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.WorkflowServices / System / ServiceModel / Description / DurableOperationAttribute.cs / 1305376 / DurableOperationAttribute.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Description
{
using System;
using System.ServiceModel.Dispatcher;
using System.ServiceModel.Channels;
using System.ServiceModel.Administration;
[AttributeUsage(AttributeTargets.Method)]
public sealed class DurableOperationAttribute : Attribute, IOperationBehavior, IWmiInstanceProvider
{
static DurableOperationAttribute defaultInstance = new DurableOperationAttribute();
bool canCreateInstance;
bool canCreateInstanceSetExplicitly;
bool completesInstance;
public DurableOperationAttribute()
{
this.completesInstance = false;
}
public bool CanCreateInstance
{
get
{
return this.canCreateInstance;
}
set
{
this.canCreateInstance = value;
this.canCreateInstanceSetExplicitly = true;
}
}
public bool CompletesInstance
{
get
{
return this.completesInstance;
}
set
{
this.completesInstance = value;
}
}
internal static DurableOperationAttribute DefaultInstance
{
get
{
return defaultInstance;
}
}
public void AddBindingParameters(
OperationDescription operationDescription,
BindingParameterCollection bindingParameters)
{
// empty
}
public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation)
{
// empty
}
public void ApplyDispatchBehavior(
OperationDescription operationDescription,
DispatchOperation dispatchOperation)
{
if (dispatchOperation == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("dispatchOperation");
}
if (dispatchOperation.Invoker == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
new InvalidOperationException(
SR2.GetString(
SR2.ExistingIOperationInvokerRequired,
typeof(DurableOperationAttribute).Name)));
}
if (operationDescription == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("operationDescription");
}
if (operationDescription.DeclaringContract == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(
"operationDescription",
SR2.GetString(SR2.OperationDescriptionNeedsDeclaringContract));
}
bool canCreate = CanCreateInstanceForOperation(dispatchOperation.IsOneWay);
dispatchOperation.Invoker =
new ServiceOperationInvoker(
dispatchOperation.Invoker,
this.CompletesInstance,
canCreate,
operationDescription.DeclaringContract.SessionMode != SessionMode.NotAllowed);
}
void IWmiInstanceProvider.FillInstance(IWmiInstance wmiInstance)
{
wmiInstance.SetProperty("CanCreateInstance", this.CanCreateInstance);
wmiInstance.SetProperty("CompletesInstance", this.CompletesInstance);
}
string IWmiInstanceProvider.GetInstanceType()
{
return "DurableOperationAttribute";
}
public void Validate(OperationDescription operationDescription)
{
// empty
}
internal bool CanCreateInstanceForOperation(bool isOneWay)
{
bool canCreate = false;
if (this.canCreateInstanceSetExplicitly)
{
canCreate = this.canCreateInstance;
}
else
{
if (isOneWay)
{
canCreate = false;
}
else
{
canCreate = true;
}
}
return canCreate;
}
}
}
// 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
- unsafenativemethodsother.cs
- WsatTransactionHeader.cs
- CodeSubDirectoriesCollection.cs
- precedingquery.cs
- SmiTypedGetterSetter.cs
- DynamicDataResources.Designer.cs
- XmlDeclaration.cs
- StringToken.cs
- OutputWindow.cs
- ObjectHelper.cs
- Properties.cs
- Receive.cs
- ProcessHostFactoryHelper.cs
- RTLAwareMessageBox.cs
- BasicHttpMessageSecurityElement.cs
- DBConnection.cs
- XmlReader.cs
- DataGridViewBindingCompleteEventArgs.cs
- SingleAnimation.cs
- XmlSerializerVersionAttribute.cs
- OptimizerPatterns.cs
- ObjectStorage.cs
- GroupBox.cs
- diagnosticsswitches.cs
- OleDbConnectionFactory.cs
- UriParserTemplates.cs
- ConfigurationFileMap.cs
- CellParaClient.cs
- QilNode.cs
- AuthenticatedStream.cs
- CustomErrorsSection.cs
- PngBitmapEncoder.cs
- CorrelationManager.cs
- SpeakInfo.cs
- ButtonChrome.cs
- TimeStampChecker.cs
- PeerCollaboration.cs
- CoTaskMemHandle.cs
- Stack.cs
- PropertyDescriptorGridEntry.cs
- CompositeDataBoundControl.cs
- StandardTransformFactory.cs
- SystemWebExtensionsSectionGroup.cs
- ConcatQueryOperator.cs
- WebPartHeaderCloseVerb.cs
- DataReaderContainer.cs
- DateTimeFormatInfo.cs
- DynamicEndpoint.cs
- WindowsScrollBar.cs
- securitycriticaldata.cs
- CustomCategoryAttribute.cs
- AggregatePushdown.cs
- ExpandoObject.cs
- IBuiltInEvidence.cs
- PointAnimationBase.cs
- FilteredDataSetHelper.cs
- FlowLayout.cs
- PeerService.cs
- OutputCacheModule.cs
- SerializerWriterEventHandlers.cs
- TextBoxAutoCompleteSourceConverter.cs
- TypeNameConverter.cs
- ObjectStorage.cs
- SecondaryIndexList.cs
- MetafileHeader.cs
- ErrorFormatterPage.cs
- CapiSafeHandles.cs
- AdornedElementPlaceholder.cs
- BinaryNode.cs
- EventItfInfo.cs
- BrowserInteropHelper.cs
- XmlUTF8TextReader.cs
- OutputCacheSettings.cs
- XmlWrappingWriter.cs
- DataKey.cs
- ApplicationDirectoryMembershipCondition.cs
- OverflowException.cs
- Mouse.cs
- XmlSchemaSimpleTypeRestriction.cs
- SchemaSetCompiler.cs
- VectorAnimationBase.cs
- SplayTreeNode.cs
- EDesignUtil.cs
- CompiledRegexRunner.cs
- AutomationInteropProvider.cs
- WebRequestModulesSection.cs
- EnumerableRowCollection.cs
- SpecialTypeDataContract.cs
- FlowLayoutSettings.cs
- ServiceMemoryGates.cs
- WebBrowserSiteBase.cs
- VirtualPathUtility.cs
- HelpInfo.cs
- Baml2006Reader.cs
- ContentTextAutomationPeer.cs
- FocusTracker.cs
- ConstructorNeedsTagAttribute.cs
- BamlLocalizableResourceKey.cs
- InitialServerConnectionReader.cs
- _CookieModule.cs