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
- RotateTransform.cs
- storepermission.cs
- ControlHelper.cs
- AlphaSortedEnumConverter.cs
- ReadOnlyDataSource.cs
- SqlCachedBuffer.cs
- TextBoxAutoCompleteSourceConverter.cs
- FileAuthorizationModule.cs
- TextSearch.cs
- AsymmetricAlgorithm.cs
- XmlReaderDelegator.cs
- InfoCardAsymmetricCrypto.cs
- HyperLinkColumn.cs
- ResXBuildProvider.cs
- DataSourceControlBuilder.cs
- LinkTarget.cs
- ClientBase.cs
- InvokeBase.cs
- DataGridViewImageCell.cs
- FixedSOMPage.cs
- DataGridViewAutoSizeModeEventArgs.cs
- Command.cs
- PerformanceCounterManager.cs
- OrthographicCamera.cs
- TimeoutHelper.cs
- remotingproxy.cs
- TextSimpleMarkerProperties.cs
- ElapsedEventArgs.cs
- TimeSpanStorage.cs
- WindowsPrincipal.cs
- XmlILOptimizerVisitor.cs
- StateManager.cs
- XmlLinkedNode.cs
- FacetValueContainer.cs
- Cursors.cs
- WinFormsUtils.cs
- BooleanAnimationBase.cs
- Native.cs
- StdValidatorsAndConverters.cs
- ComEventsHelper.cs
- ContentElement.cs
- DesignerSerializerAttribute.cs
- DesigntimeLicenseContext.cs
- DocumentCollection.cs
- ConvertEvent.cs
- CryptoHandle.cs
- SqlDataSourceAdvancedOptionsForm.cs
- Registry.cs
- ObjectPersistData.cs
- Select.cs
- PerformanceCounterPermission.cs
- GridView.cs
- XmlParser.cs
- Token.cs
- IdleTimeoutMonitor.cs
- InputLanguageEventArgs.cs
- PathStreamGeometryContext.cs
- DSASignatureDeformatter.cs
- ECDiffieHellmanPublicKey.cs
- DataRecordInternal.cs
- FieldNameLookup.cs
- CodeTypeOfExpression.cs
- ClientType.cs
- TextElementEnumerator.cs
- ToolStripItemRenderEventArgs.cs
- PeerTransportElement.cs
- CircleHotSpot.cs
- LocalValueEnumerator.cs
- FixedPageStructure.cs
- ServiceChannelProxy.cs
- PolyQuadraticBezierSegment.cs
- Button.cs
- TextFormattingConverter.cs
- VisualCollection.cs
- SystemEvents.cs
- SecureConversationVersion.cs
- DefaultWorkflowSchedulerService.cs
- HttpWriter.cs
- ObjectDataSourceChooseMethodsPanel.cs
- PropertyValueEditor.cs
- IApplicationTrustManager.cs
- ParameterRefs.cs
- SettingsPropertyCollection.cs
- HtmlFormParameterReader.cs
- PropertyIDSet.cs
- DataGridViewTopRowAccessibleObject.cs
- FormViewModeEventArgs.cs
- SatelliteContractVersionAttribute.cs
- GridEntryCollection.cs
- FileCodeGroup.cs
- HMACMD5.cs
- RelationHandler.cs
- Padding.cs
- KoreanCalendar.cs
- DataGridRow.cs
- DependencyObject.cs
- ResXResourceWriter.cs
- PropertyGridCommands.cs
- NativeWindow.cs
- EntityDataSourceWizardForm.cs