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
- Task.cs
- NamespaceListProperty.cs
- SortQuery.cs
- DocumentGridPage.cs
- HwndSubclass.cs
- TextEditorCharacters.cs
- StylusPlugInCollection.cs
- HtmlPageAdapter.cs
- EncoderExceptionFallback.cs
- InvalidOleVariantTypeException.cs
- WsdlParser.cs
- EmptyCollection.cs
- EntityModelBuildProvider.cs
- ReadWriteObjectLock.cs
- ScriptingSectionGroup.cs
- BitmapDecoder.cs
- IgnoreSectionHandler.cs
- GeneralTransform3DGroup.cs
- ValidationSummary.cs
- Message.cs
- FormViewRow.cs
- UserValidatedEventArgs.cs
- RegexCode.cs
- StandardOleMarshalObject.cs
- Parser.cs
- XmlDataImplementation.cs
- CompositionTarget.cs
- TraceSection.cs
- TextAction.cs
- SeverityFilter.cs
- WinInetCache.cs
- XmlSchemaSimpleContentRestriction.cs
- CalculatedColumn.cs
- TypeSystemProvider.cs
- XmlSiteMapProvider.cs
- HyperLinkStyle.cs
- PrePrepareMethodAttribute.cs
- SerialPort.cs
- XPathNavigatorException.cs
- GC.cs
- HtmlInputReset.cs
- SqlEnums.cs
- CodeStatementCollection.cs
- linebase.cs
- TypeConstant.cs
- TagMapInfo.cs
- SourceSwitch.cs
- HostProtectionPermission.cs
- BevelBitmapEffect.cs
- _IPv4Address.cs
- PersonalizationStateInfoCollection.cs
- HostedNamedPipeTransportManager.cs
- hresults.cs
- Registry.cs
- BitmapMetadata.cs
- SchemaNames.cs
- DescendentsWalkerBase.cs
- VBIdentifierNameEditor.cs
- DeviceFilterEditorDialog.cs
- TextMarkerSource.cs
- TableSectionStyle.cs
- ClrPerspective.cs
- ColumnWidthChangedEvent.cs
- ReturnEventArgs.cs
- ManagedWndProcTracker.cs
- BookmarkNameHelper.cs
- ListViewGroupConverter.cs
- BindingMAnagerBase.cs
- BackStopAuthenticationModule.cs
- Misc.cs
- OleCmdHelper.cs
- EmptyCollection.cs
- ExpressionLexer.cs
- CorrelationManager.cs
- XmlDataDocument.cs
- ParserStack.cs
- SecurityContext.cs
- SafeHandles.cs
- SvcMapFile.cs
- SpellerInterop.cs
- ControlBuilderAttribute.cs
- KeyToListMap.cs
- ProgressBar.cs
- __ConsoleStream.cs
- QueryExtender.cs
- TaskExceptionHolder.cs
- SoapCodeExporter.cs
- DependencyPropertyConverter.cs
- XmlAttribute.cs
- HttpListenerRequestTraceRecord.cs
- Rotation3DKeyFrameCollection.cs
- InputLanguageProfileNotifySink.cs
- TextContainer.cs
- FocusTracker.cs
- ObjectItemConventionAssemblyLoader.cs
- CodePageUtils.cs
- AnimationClock.cs
- FormViewUpdateEventArgs.cs
- NamespaceQuery.cs
- SecurityUtils.cs