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
- WebPartMinimizeVerb.cs
- LockedActivityGlyph.cs
- PersonalizationEntry.cs
- QilPatternFactory.cs
- NotImplementedException.cs
- SqlDataSourceSelectingEventArgs.cs
- SqlParameterCollection.cs
- XmlSerializationReader.cs
- VectorCollectionConverter.cs
- XmlEncoding.cs
- WindowsRebar.cs
- BindingContext.cs
- Win32.cs
- TripleDESCryptoServiceProvider.cs
- RegexParser.cs
- _IPv6Address.cs
- followingquery.cs
- NativeRecognizer.cs
- AttachedPropertyMethodSelector.cs
- BinaryReader.cs
- ApplicationGesture.cs
- SignatureDescription.cs
- ToolStripDesigner.cs
- AmbientValueAttribute.cs
- StylusPointCollection.cs
- RelatedPropertyManager.cs
- validationstate.cs
- SQLDouble.cs
- TextTabProperties.cs
- Fx.cs
- ValueConversionAttribute.cs
- ThumbAutomationPeer.cs
- SimpleRecyclingCache.cs
- BufferCache.cs
- ProcessHost.cs
- MultiSelector.cs
- login.cs
- SystemFonts.cs
- WebScriptServiceHostFactory.cs
- EmptyEnumerator.cs
- TemplatePagerField.cs
- contentDescriptor.cs
- MobileControlsSection.cs
- CommandManager.cs
- PreviousTrackingServiceAttribute.cs
- AttributeEmitter.cs
- EntityDesignPluralizationHandler.cs
- InputMethodStateTypeInfo.cs
- PrintPageEvent.cs
- WebGetAttribute.cs
- CacheEntry.cs
- Environment.cs
- RichTextBoxAutomationPeer.cs
- FileDialog_Vista.cs
- WindowsMenu.cs
- XmlSchemaAny.cs
- safePerfProviderHandle.cs
- Token.cs
- BrowserCapabilitiesFactory.cs
- TextWriterEngine.cs
- QilPatternFactory.cs
- ToolStripItemRenderEventArgs.cs
- DecoderReplacementFallback.cs
- RegularExpressionValidator.cs
- CacheMemory.cs
- ExtensionQuery.cs
- AutomationEventArgs.cs
- OLEDB_Enum.cs
- MarshalByValueComponent.cs
- QueryRewriter.cs
- DataGridViewLinkCell.cs
- PathGeometry.cs
- ResourceProviderFactory.cs
- UrlMapping.cs
- SafeHandles.cs
- AuthenticatedStream.cs
- SimpleExpression.cs
- XPathDescendantIterator.cs
- _StreamFramer.cs
- CodeTryCatchFinallyStatement.cs
- WorkflowApplicationCompletedEventArgs.cs
- ParenthesizePropertyNameAttribute.cs
- AdornerLayer.cs
- FormatConvertedBitmap.cs
- DependencyPropertyChangedEventArgs.cs
- RelatedPropertyManager.cs
- TreeView.cs
- ReflectionServiceProvider.cs
- SizeChangedInfo.cs
- GenerateScriptTypeAttribute.cs
- BezierSegment.cs
- XslTransform.cs
- XmlNullResolver.cs
- CompilerErrorCollection.cs
- ConfigurationManagerHelperFactory.cs
- InternalConfigSettingsFactory.cs
- ToolBarOverflowPanel.cs
- ContextMenu.cs
- BuildProviderCollection.cs
- NumberAction.cs