Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Expressions / ValueTypeFieldReference.cs / 1305376 / ValueTypeFieldReference.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Expressions { using System.ComponentModel; using System.Reflection; using System.Runtime; using System.Runtime.Serialization; public sealed class ValueTypeFieldReference: CodeActivity > { FieldInfo fieldInfo; public ValueTypeFieldReference() : base() { } [DefaultValue(null)] public string FieldName { get; set; } [DefaultValue(null)] public InOutArgument OperandLocation { get; set; } protected override void CacheMetadata(CodeActivityMetadata metadata) { bool isRequired = false; if (!typeof(TOperand).IsValueType) { metadata.AddValidationError(SR.TypeMustbeValueType(typeof(TOperand).Name)); } if (typeof(TOperand).IsEnum) { metadata.AddValidationError(SR.TargetTypeCannotBeEnum(this.GetType().Name, this.DisplayName)); } if (string.IsNullOrEmpty(this.FieldName)) { metadata.AddValidationError(SR.ActivityPropertyMustBeSet("FieldName", this.DisplayName)); } else { this.fieldInfo = typeof(TOperand).GetField(this.FieldName); isRequired = this.fieldInfo != null && !this.fieldInfo.IsStatic; if (this.fieldInfo == null) { metadata.AddValidationError(SR.MemberNotFound(this.FieldName, typeof(TOperand).Name)); } else if (this.fieldInfo.IsInitOnly) { metadata.AddValidationError(SR.MemberIsReadOnly(this.FieldName, typeof(TOperand).Name)); } } MemberExpressionHelper.AddOperandLocationArgument (metadata, this.OperandLocation, isRequired); } protected override Location Execute(CodeActivityContext context) { Location operandLocationValue = this.OperandLocation.GetLocation(context); Fx.Assert(operandLocationValue != null, "OperandLocation must not be null"); Fx.Assert(this.fieldInfo != null, "fieldInfo must not be null."); return new FieldLocation(this.fieldInfo, operandLocationValue); } [DataContract] class FieldLocation : Location { [DataMember] FieldInfo fieldInfo; [DataMember(EmitDefaultValue = false)] Location ownerLocation; public FieldLocation(FieldInfo fieldInfo, Location ownerLocation) : base() { this.fieldInfo = fieldInfo; this.ownerLocation = ownerLocation; } public override TResult Value { get { return (TResult)this.fieldInfo.GetValue(this.ownerLocation.Value); } set { object copy = this.ownerLocation.Value; this.fieldInfo.SetValue(copy, value); this.ownerLocation.Value = (TOperand)copy; } } } } } // 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
- LogManagementAsyncResult.cs
- JapaneseLunisolarCalendar.cs
- RightsManagementProvider.cs
- WebPartConnectionsCancelEventArgs.cs
- ModelProperty.cs
- ISO2022Encoding.cs
- TypeInitializationException.cs
- querybuilder.cs
- MaterialGroup.cs
- RunWorkerCompletedEventArgs.cs
- Visual3DCollection.cs
- DetailsViewUpdateEventArgs.cs
- TextRangeEditLists.cs
- AmbiguousMatchException.cs
- GridViewSortEventArgs.cs
- TerminateSequenceResponse.cs
- ResourcePermissionBase.cs
- MarkupObject.cs
- ReadWriteObjectLock.cs
- Bezier.cs
- AudienceUriMode.cs
- PageAsyncTaskManager.cs
- MessageQueueInstaller.cs
- DateTimeHelper.cs
- SourceLineInfo.cs
- AuthorizationRuleCollection.cs
- ConfigurationStrings.cs
- AnyAllSearchOperator.cs
- ActiveDocumentEvent.cs
- TypeElementCollection.cs
- DataGridViewColumnConverter.cs
- DataGridViewAddColumnDialog.cs
- MimeWriter.cs
- HostedImpersonationContext.cs
- OracleRowUpdatedEventArgs.cs
- RSAProtectedConfigurationProvider.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- ActivityExecutionFilter.cs
- InstanceCreationEditor.cs
- COM2Enum.cs
- UntypedNullExpression.cs
- InputMethodStateTypeInfo.cs
- XsltCompileContext.cs
- PageSetupDialog.cs
- PathSegmentCollection.cs
- sqlser.cs
- ComponentResourceKey.cs
- TreeNodeSelectionProcessor.cs
- AuthorizationSection.cs
- SqlConnectionManager.cs
- RuntimeWrappedException.cs
- ProtectedConfigurationSection.cs
- GuidTagList.cs
- EdmFunction.cs
- ConfigXmlComment.cs
- ECDsaCng.cs
- DBConnection.cs
- XmlSchemaElement.cs
- Models.cs
- LogFlushAsyncResult.cs
- XmlElementList.cs
- ExtensionQuery.cs
- EtwTrace.cs
- XmlNullResolver.cs
- WebPageTraceListener.cs
- CodeThrowExceptionStatement.cs
- ConnectorDragDropGlyph.cs
- Cell.cs
- XmlAttributeCollection.cs
- ReliabilityContractAttribute.cs
- XmlReaderSettings.cs
- Vector3DIndependentAnimationStorage.cs
- StructuredProperty.cs
- ObjectResult.cs
- MILUtilities.cs
- RegisteredScript.cs
- XmlSerializationReader.cs
- NavigationService.cs
- ClientUtils.cs
- IPCCacheManager.cs
- PreservationFileReader.cs
- RuntimeConfigLKG.cs
- RawMouseInputReport.cs
- TaiwanCalendar.cs
- SessionStateItemCollection.cs
- ListItemConverter.cs
- MenuItemCollection.cs
- DataTableCollection.cs
- RowToParametersTransformer.cs
- UInt64.cs
- XmlIgnoreAttribute.cs
- ClientSponsor.cs
- Tag.cs
- BindingListCollectionView.cs
- ProcessRequestArgs.cs
- IxmlLineInfo.cs
- BindingExpressionUncommonField.cs
- ManipulationDelta.cs
- UnsafeNativeMethods.cs
- ExecutedRoutedEventArgs.cs