Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Expressions / PropertyValue.cs / 1305376 / PropertyValue.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Expressions { using System.Activities; using System.Activities.Validation; using System.ComponentModel; using System.Reflection; using System.Runtime; public sealed class PropertyValue: CodeActivity { Func operationFunction; public InArgument Operand { get; set; } [DefaultValue(null)] public string PropertyName { get; set; } protected override void CacheMetadata(CodeActivityMetadata metadata) { bool isRequired = false; if (typeof(TOperand).IsEnum) { metadata.AddValidationError(SR.TargetTypeCannotBeEnum(this.GetType().Name, this.DisplayName)); } if (string.IsNullOrEmpty(this.PropertyName)) { metadata.AddValidationError(SR.ActivityPropertyMustBeSet("PropertyName", this.DisplayName)); } else { PropertyInfo propertyInfo = null; Type operandType = typeof(TOperand); propertyInfo = operandType.GetProperty(this.PropertyName); if (propertyInfo == null) { metadata.AddValidationError(SR.MemberNotFound(this.PropertyName, typeof(TOperand).Name)); } else { Fx.Assert(propertyInfo.GetAccessors().Length > 0, "Property should have at least 1 accessor."); isRequired = !propertyInfo.GetAccessors()[0].IsStatic; ValidationError validationError; if (!MemberExpressionHelper.TryGenerateLinqDelegate(this.PropertyName, false, propertyInfo.GetAccessors()[0].IsStatic, out this.operationFunction, out validationError)) { metadata.AddValidationError(validationError); } MethodInfo getMethod = propertyInfo.GetGetMethod(); MethodInfo setMethod = propertyInfo.GetSetMethod(); if ((getMethod != null && !getMethod.IsStatic) || (setMethod != null && !setMethod.IsStatic)) { isRequired = true; } } } MemberExpressionHelper.AddOperandArgument(metadata, this.Operand, isRequired); } protected override TResult Execute(CodeActivityContext context) { TOperand operandValue = this.Operand.Get(context); TResult result = this.operationFunction(operandValue); return result; } } } // 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
- ProcessHostMapPath.cs
- HttpWriter.cs
- EntityFunctions.cs
- XmlEncodedRawTextWriter.cs
- XmlSchemaAny.cs
- _OSSOCK.cs
- ExternalCalls.cs
- RegistryPermission.cs
- UITypeEditor.cs
- Activity.cs
- FileReservationCollection.cs
- WebExceptionStatus.cs
- ToolStripRendererSwitcher.cs
- SqlDelegatedTransaction.cs
- AnimationStorage.cs
- CatchDesigner.xaml.cs
- WebPartConnectionsConfigureVerb.cs
- ClassicBorderDecorator.cs
- DataGridHeaderBorder.cs
- Wizard.cs
- DrawingCollection.cs
- SourceLineInfo.cs
- BrowserCapabilitiesCodeGenerator.cs
- WebControlParameterProxy.cs
- MenuTracker.cs
- PersonalizationStateQuery.cs
- ExpressionsCollectionEditor.cs
- SchemaObjectWriter.cs
- QuaternionConverter.cs
- XslCompiledTransform.cs
- PackWebRequestFactory.cs
- TextChange.cs
- DetailsView.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- MimePart.cs
- Utils.cs
- FormCollection.cs
- GridViewDeletedEventArgs.cs
- StylusTouchDevice.cs
- InputProcessorProfiles.cs
- InvalidOperationException.cs
- DateTimeOffsetConverter.cs
- DbXmlEnabledProviderManifest.cs
- UnwrappedTypesXmlSerializerManager.cs
- DiscoveryMessageSequenceGenerator.cs
- ToolStripContentPanel.cs
- regiisutil.cs
- LinqDataSourceHelper.cs
- LineBreakRecord.cs
- Set.cs
- MenuAutoFormat.cs
- GiveFeedbackEvent.cs
- ObjectAnimationBase.cs
- COM2Enum.cs
- CompositionCommandSet.cs
- ReturnEventArgs.cs
- CompleteWizardStep.cs
- ShaderEffect.cs
- CursorConverter.cs
- TableLayoutStyleCollection.cs
- LateBoundBitmapDecoder.cs
- WebPartCancelEventArgs.cs
- DictionaryContent.cs
- SoapElementAttribute.cs
- ReferencedType.cs
- VolatileEnlistmentMultiplexing.cs
- VoiceInfo.cs
- ChannelManager.cs
- QueryStringParameter.cs
- SqlClientWrapperSmiStreamChars.cs
- TemplateGroupCollection.cs
- Attributes.cs
- SendActivity.cs
- HMACSHA256.cs
- RectIndependentAnimationStorage.cs
- TdsParserSessionPool.cs
- XmlSerializer.cs
- WebPartConnectVerb.cs
- ScriptMethodAttribute.cs
- StringStorage.cs
- ZipIOExtraField.cs
- Int32Rect.cs
- AssemblyUtil.cs
- cryptoapiTransform.cs
- PeerNodeAddress.cs
- basenumberconverter.cs
- AuthorizationPolicyTypeElement.cs
- ProtocolsInstallComponent.cs
- XmlQueryTypeFactory.cs
- WorkflowIdleBehavior.cs
- HttpRequestBase.cs
- WorkerRequest.cs
- HttpException.cs
- TemplateKeyConverter.cs
- BoundsDrawingContextWalker.cs
- DnsEndPoint.cs
- NewItemsContextMenuStrip.cs
- DummyDataSource.cs
- ArgumentOutOfRangeException.cs
- EmissiveMaterial.cs