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
- MimeFormReflector.cs
- BinaryObjectInfo.cs
- Int32RectConverter.cs
- ClientSponsor.cs
- precedingsibling.cs
- DataGridColumn.cs
- ResXBuildProvider.cs
- DataBoundLiteralControl.cs
- IndicFontClient.cs
- DataGridViewCellPaintingEventArgs.cs
- ValidationPropertyAttribute.cs
- EventLogger.cs
- MemberDescriptor.cs
- HwndHost.cs
- CompressionTransform.cs
- WindowsBrush.cs
- ReflectionUtil.cs
- ErrorHandler.cs
- DBCSCodePageEncoding.cs
- DbTypeMap.cs
- DynamicControl.cs
- Metadata.cs
- SharingService.cs
- ToolStripCollectionEditor.cs
- RegexStringValidator.cs
- AttributeExtensions.cs
- TypeConverterHelper.cs
- Normalizer.cs
- FileClassifier.cs
- WebPartConnectVerb.cs
- shaperfactory.cs
- PeerInvitationResponse.cs
- SwitchExpression.cs
- DataGridViewControlCollection.cs
- WindowsRichEditRange.cs
- UpdateManifestForBrowserApplication.cs
- LoaderAllocator.cs
- XmlSchemaValidationException.cs
- PropertySourceInfo.cs
- MDIWindowDialog.cs
- DispatcherExceptionFilterEventArgs.cs
- StreamWriter.cs
- BaseServiceProvider.cs
- OleDbEnumerator.cs
- EventManager.cs
- ImmutableObjectAttribute.cs
- LeaseManager.cs
- HttpHandler.cs
- WindowsAuthenticationModule.cs
- PanelDesigner.cs
- ParameterExpression.cs
- EntityContainer.cs
- LaxModeSecurityHeaderElementInferenceEngine.cs
- EntityClientCacheEntry.cs
- DataSourceSelectArguments.cs
- AnnotationResourceCollection.cs
- SchemaDeclBase.cs
- TextElementCollection.cs
- WmlTextBoxAdapter.cs
- TraceHandler.cs
- Run.cs
- TextChangedEventArgs.cs
- Substitution.cs
- BindingList.cs
- ImageIndexConverter.cs
- SqlServices.cs
- DesignerSerializerAttribute.cs
- KeySplineConverter.cs
- AutomationPatternInfo.cs
- TypeDependencyAttribute.cs
- ConditionChanges.cs
- CryptoStream.cs
- EqualityComparer.cs
- DataRecordObjectView.cs
- TextTreeDeleteContentUndoUnit.cs
- SupportsEventValidationAttribute.cs
- ComponentManagerBroker.cs
- SByteConverter.cs
- BaseCodeDomTreeGenerator.cs
- ToolboxComponentsCreatedEventArgs.cs
- EventLogStatus.cs
- Label.cs
- RealizationDrawingContextWalker.cs
- DataControlFieldsEditor.cs
- Marshal.cs
- ResizingMessageFilter.cs
- BasicCellRelation.cs
- SqlConnectionHelper.cs
- TreeIterator.cs
- SerializationSectionGroup.cs
- StrokeNodeEnumerator.cs
- XmlSerializerAssemblyAttribute.cs
- EncryptedHeader.cs
- XsltOutput.cs
- ObjectConverter.cs
- CultureMapper.cs
- SignatureResourcePool.cs
- CustomErrorCollection.cs
- RangeValidator.cs
- Rotation3DAnimation.cs