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
- TableLayoutPanelBehavior.cs
- InternalTypeHelper.cs
- InstancePersistenceEvent.cs
- TextureBrush.cs
- RuleConditionDialog.cs
- Code.cs
- EventWaitHandleSecurity.cs
- RevocationPoint.cs
- SqlIdentifier.cs
- AttributeCollection.cs
- ScaleTransform.cs
- ObjectDataSourceEventArgs.cs
- RoleService.cs
- PlaceHolder.cs
- SemaphoreSecurity.cs
- Misc.cs
- GetKeyedHashRequest.cs
- DesignerRegionMouseEventArgs.cs
- XPathParser.cs
- ACE.cs
- HttpCacheParams.cs
- List.cs
- CriticalExceptions.cs
- ActivityBuilderHelper.cs
- WebProxyScriptElement.cs
- CodeMemberField.cs
- WebPartsSection.cs
- PhysicalOps.cs
- OutKeywords.cs
- DurableEnlistmentState.cs
- ToolBarButton.cs
- KeyedHashAlgorithm.cs
- WebPartMovingEventArgs.cs
- DataGridSortCommandEventArgs.cs
- GridItemPatternIdentifiers.cs
- LicFileLicenseProvider.cs
- OutputCacheSettings.cs
- SQLUtility.cs
- WindowsListView.cs
- WebResponse.cs
- SqlDataSourceCache.cs
- Invariant.cs
- MultiBinding.cs
- SortDescription.cs
- ConfigXmlAttribute.cs
- PublisherMembershipCondition.cs
- CollectionViewGroupInternal.cs
- TypeBuilderInstantiation.cs
- BasicCellRelation.cs
- StoragePropertyMapping.cs
- TextEditorTyping.cs
- JsonReader.cs
- WebPartConnectionsConnectVerb.cs
- DbMetaDataFactory.cs
- TaskExtensions.cs
- ToolStripDropDownButton.cs
- ReferentialConstraint.cs
- AtomPub10ServiceDocumentFormatter.cs
- ZipIOLocalFileHeader.cs
- AncillaryOps.cs
- AttributeTableBuilder.cs
- UnsafeNativeMethods.cs
- CodeConstructor.cs
- PersonalizationState.cs
- RecordConverter.cs
- SafeBitVector32.cs
- TreeNodeStyleCollection.cs
- WindowsListViewItemStartMenu.cs
- TaskExceptionHolder.cs
- KeyFrames.cs
- DisplayInformation.cs
- DesignBindingPropertyDescriptor.cs
- ParameterElement.cs
- NumericUpDown.cs
- PreparingEnlistment.cs
- ReadOnlyDictionary.cs
- BorderGapMaskConverter.cs
- DataGridCaption.cs
- Lease.cs
- ListInitExpression.cs
- CompiledIdentityConstraint.cs
- XmlSchemaDatatype.cs
- AutoFocusStyle.xaml.cs
- XmlAnyElementAttribute.cs
- SelectionListComponentEditor.cs
- RadioButton.cs
- DayRenderEvent.cs
- DesignTimeHTMLTextWriter.cs
- ContainerTracking.cs
- ImageButton.cs
- SimpleTypeResolver.cs
- ControlValuePropertyAttribute.cs
- DateBoldEvent.cs
- EntityFrameworkVersions.cs
- TextContainer.cs
- SecurityResources.cs
- SlipBehavior.cs
- RowUpdatedEventArgs.cs
- GridViewColumnCollection.cs
- DateTimeStorage.cs