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
- UserValidatedEventArgs.cs
- ValidatorCollection.cs
- UnsafeNativeMethodsCLR.cs
- XPathDocumentBuilder.cs
- PointLightBase.cs
- SecurityUtils.cs
- RowToFieldTransformer.cs
- ComplexTypeEmitter.cs
- ConfigurationStrings.cs
- ProxyFragment.cs
- Privilege.cs
- DetailsViewInsertEventArgs.cs
- BuildProvider.cs
- NestedContainer.cs
- ProtocolsSection.cs
- MD5CryptoServiceProvider.cs
- InstanceOwnerQueryResult.cs
- TrackingMemoryStreamFactory.cs
- DesignerActionListCollection.cs
- DataContractSerializerOperationGenerator.cs
- TimerElapsedEvenArgs.cs
- HostedElements.cs
- ContextMenu.cs
- Serializer.cs
- DataSourceCache.cs
- Int32AnimationBase.cs
- MetadataProperty.cs
- InstancePersistenceContext.cs
- HelpProvider.cs
- KoreanCalendar.cs
- TextServicesProperty.cs
- MimeTypeAttribute.cs
- _UriTypeConverter.cs
- ResXBuildProvider.cs
- DataGridItemCollection.cs
- SqlDataReader.cs
- CodeTypeReferenceCollection.cs
- RestClientProxyHandler.cs
- XmlQueryType.cs
- PixelFormats.cs
- XmlIncludeAttribute.cs
- ImageButton.cs
- BinaryWriter.cs
- XmlSchemaRedefine.cs
- EntitySqlQueryCacheEntry.cs
- OptimizedTemplateContentHelper.cs
- NumericUpDownAccelerationCollection.cs
- WsiProfilesElementCollection.cs
- IdentityManager.cs
- UserControlAutomationPeer.cs
- PriorityChain.cs
- XmlSigningNodeWriter.cs
- ListManagerBindingsCollection.cs
- SyndicationSerializer.cs
- HttpListenerResponse.cs
- OleDbDataReader.cs
- XmlSerializerNamespaces.cs
- WebPartDisplayModeEventArgs.cs
- SoapSchemaImporter.cs
- AuthenticationSection.cs
- dbdatarecord.cs
- DataListItemEventArgs.cs
- Cast.cs
- ApplicationInfo.cs
- SweepDirectionValidation.cs
- EntityProviderFactory.cs
- EFAssociationProvider.cs
- DataFormat.cs
- Utils.cs
- DataErrorValidationRule.cs
- HierarchicalDataBoundControlAdapter.cs
- ExecutedRoutedEventArgs.cs
- GenerateTemporaryAssemblyTask.cs
- WebBrowser.cs
- Update.cs
- ExpressionBindingCollection.cs
- _TimerThread.cs
- Columns.cs
- ParsedAttributeCollection.cs
- MouseBinding.cs
- SrgsToken.cs
- DetailsViewPageEventArgs.cs
- MessageQueueTransaction.cs
- ConditionalAttribute.cs
- ResourceManagerWrapper.cs
- TemplatedAdorner.cs
- RuntimeResourceSet.cs
- MaterialGroup.cs
- XmlChildNodes.cs
- ExceptionHelpers.cs
- SafeRightsManagementSessionHandle.cs
- AppliedDeviceFiltersDialog.cs
- StrongTypingException.cs
- MethodSignatureGenerator.cs
- PasswordPropertyTextAttribute.cs
- DataListItemEventArgs.cs
- TemplatedControlDesigner.cs
- QueryExtender.cs
- EventArgs.cs
- FindCriteria11.cs