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
- DialogResultConverter.cs
- DPAPIProtectedConfigurationProvider.cs
- PageParserFilter.cs
- EmptyEnumerator.cs
- AutomationIdentifierGuids.cs
- ConfigXmlSignificantWhitespace.cs
- DataGridViewCellParsingEventArgs.cs
- Bitmap.cs
- XhtmlBasicPanelAdapter.cs
- AsyncOperationManager.cs
- PageContentCollection.cs
- FreeFormDragDropManager.cs
- ConnectionsZoneDesigner.cs
- QueryStringConverter.cs
- ConnectionPoolManager.cs
- PermissionSetTriple.cs
- TableDesigner.cs
- ColumnMap.cs
- WeakRefEnumerator.cs
- StorageMappingFragment.cs
- OdbcReferenceCollection.cs
- XmlSerializationGeneratedCode.cs
- Endpoint.cs
- DiscoveryService.cs
- AuthenticodeSignatureInformation.cs
- SystemWebSectionGroup.cs
- StylusPointCollection.cs
- PassportAuthenticationModule.cs
- DBCSCodePageEncoding.cs
- HWStack.cs
- ToolStripSettings.cs
- SmtpTransport.cs
- WasEndpointConfigContainer.cs
- InvalidCastException.cs
- CompareValidator.cs
- HandlerMappingMemo.cs
- VectorConverter.cs
- ZipIOExtraFieldPaddingElement.cs
- FamilyCollection.cs
- SocketException.cs
- AccessControlEntry.cs
- CompositeCollection.cs
- ReferencedType.cs
- C14NUtil.cs
- Int32AnimationUsingKeyFrames.cs
- IndexedGlyphRun.cs
- BehaviorService.cs
- ToolStripArrowRenderEventArgs.cs
- MaskDesignerDialog.cs
- ProcessActivityTreeOptions.cs
- DesignerAutoFormatCollection.cs
- SystemInformation.cs
- GridViewDeletedEventArgs.cs
- QilFactory.cs
- SortQuery.cs
- _SslStream.cs
- SvcFileManager.cs
- SoapIncludeAttribute.cs
- MemberDescriptor.cs
- MsmqChannelFactoryBase.cs
- CancellationTokenSource.cs
- URLAttribute.cs
- ListSortDescriptionCollection.cs
- RSAPKCS1SignatureDeformatter.cs
- EntryWrittenEventArgs.cs
- NullableDoubleAverageAggregationOperator.cs
- InfoCardCryptoHelper.cs
- MatrixCamera.cs
- PathNode.cs
- WebBrowserUriTypeConverter.cs
- MailFileEditor.cs
- PersonalizationStateQuery.cs
- LabelDesigner.cs
- JapaneseCalendar.cs
- HyperLinkColumn.cs
- XPathSingletonIterator.cs
- ContentPresenter.cs
- _OverlappedAsyncResult.cs
- ButtonChrome.cs
- DragEvent.cs
- BitmapEffectGeneralTransform.cs
- DataColumnMapping.cs
- DeclarationUpdate.cs
- Page.cs
- HwndTarget.cs
- SerializerWriterEventHandlers.cs
- MimeReflector.cs
- UnsafeNativeMethods.cs
- TemplateContent.cs
- ValueUtilsSmi.cs
- keycontainerpermission.cs
- JsonXmlDataContract.cs
- MethodAccessException.cs
- HtmlTableCell.cs
- WebBrowserNavigatingEventHandler.cs
- XmlSchemaAttributeGroupRef.cs
- FormCollection.cs
- MatrixKeyFrameCollection.cs
- AttributeEmitter.cs
- OutputCacheSettings.cs