Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Expressions / FieldReference.cs / 1305376 / FieldReference.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 FieldReference: CodeActivity > { FieldInfo fieldInfo; public FieldReference() : base() { } [DefaultValue(null)] public string FieldName { get; set; } [DefaultValue(null)] public InArgument Operand { get; set; } protected override void CacheMetadata(CodeActivityMetadata metadata) { bool isRequired = false; if (typeof(TOperand).IsEnum) { metadata.AddValidationError(SR.TargetTypeCannotBeEnum(this.GetType().Name, this.DisplayName)); } else if (typeof(TOperand).IsValueType) { metadata.AddValidationError(SR.TargetTypeIsValueType(this.GetType().Name, this.DisplayName)); } if (string.IsNullOrEmpty(this.FieldName)) { metadata.AddValidationError(SR.ActivityPropertyMustBeSet("FieldName", this.DisplayName)); } else { Type operandType = typeof(TOperand); this.fieldInfo = operandType.GetField(this.FieldName); if (this.fieldInfo == null) { metadata.AddValidationError(SR.MemberNotFound(this.FieldName, typeof(TOperand).Name)); } else { if (fieldInfo.IsInitOnly) { metadata.AddValidationError(SR.MemberIsReadOnly(this.FieldName, typeof(TOperand).Name)); } isRequired = !this.fieldInfo.IsStatic; } } MemberExpressionHelper.AddOperandArgument(metadata, this.Operand, isRequired); } protected override Location Execute(CodeActivityContext context) { Fx.Assert(this.fieldInfo != null, "fieldInfo must not be null."); return new FieldLocation(this.fieldInfo, this.Operand.Get(context)); } [DataContract] class FieldLocation : Location { [DataMember] FieldInfo fieldInfo; [DataMember(EmitDefaultValue = false)] object owner; public FieldLocation(FieldInfo fieldInfo, object owner) : base() { this.fieldInfo = fieldInfo; this.owner = owner; } public override TResult Value { get { //if (!this.fieldInfo.IsStatic && this.owner == null) //{ // // The field is non-static, and obj is a null reference // if (this.fieldInfo.DeclaringType != null) // { // throw FxTrace.Exception.AsError(new ValidationException(SR.NullReferencedMemberAccess(this.fieldInfo.DeclaringType.Name, this.fieldInfo.Name))); // } // else // { // throw FxTrace.Exception.AsError(new ValidationException(SR.NullReferencedMemberAccess(typeof(FieldInfo), "DeclaringType"))); // } //} return (TResult)this.fieldInfo.GetValue(this.owner); } set { //if (!this.fieldInfo.IsStatic && this.owner == null) //{ // if (this.fieldInfo.DeclaringType != null) // { // // The field is non-static, and obj is a null reference // throw FxTrace.Exception.AsError(new ValidationException(SR.NullReferencedMemberAccess(this.fieldInfo.DeclaringType.Name, this.fieldInfo.Name))); // } // else // { // throw FxTrace.Exception.AsError(new ValidationException(SR.NullReferencedMemberAccess(typeof(FieldInfo), "DeclaringType"))); // } //} this.fieldInfo.SetValue(this.owner, value); } } } } } // 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
- SurrogateChar.cs
- ConnectionPointCookie.cs
- UdpConstants.cs
- TCPListener.cs
- PaperSize.cs
- Invariant.cs
- TypeResolvingOptions.cs
- DBParameter.cs
- GridViewAutomationPeer.cs
- QilVisitor.cs
- LocatorManager.cs
- PageParser.cs
- CroppedBitmap.cs
- RetrieveVirtualItemEventArgs.cs
- ScriptReferenceEventArgs.cs
- NotImplementedException.cs
- QueryCursorEventArgs.cs
- mediaeventshelper.cs
- SettingsPropertyValue.cs
- TypeUsageBuilder.cs
- WorkflowApplicationException.cs
- TdsRecordBufferSetter.cs
- PersonalizablePropertyEntry.cs
- PropertyGridEditorPart.cs
- ArrayElementGridEntry.cs
- HMACRIPEMD160.cs
- errorpatternmatcher.cs
- NumberSubstitution.cs
- VerticalAlignConverter.cs
- MessageSmuggler.cs
- Baml6Assembly.cs
- DependencyPropertyChangedEventArgs.cs
- WebPartZoneBase.cs
- MonitoringDescriptionAttribute.cs
- PassportAuthenticationEventArgs.cs
- CheckBoxAutomationPeer.cs
- StreamAsIStream.cs
- X500Name.cs
- SqlHelper.cs
- ColumnHeader.cs
- StringFunctions.cs
- WebPart.cs
- HtmlInputControl.cs
- XmlDataSourceView.cs
- LabelDesigner.cs
- Asn1IntegerConverter.cs
- TabPage.cs
- DiscreteKeyFrames.cs
- ExpandedWrapper.cs
- ProgressBar.cs
- translator.cs
- NTAccount.cs
- ValueHandle.cs
- CTreeGenerator.cs
- ConfigurationSettings.cs
- HttpRuntime.cs
- CellParagraph.cs
- WebPartConnectionsEventArgs.cs
- EmptyControlCollection.cs
- DynamicILGenerator.cs
- HtmlInputReset.cs
- Span.cs
- MediaTimeline.cs
- HostingMessageProperty.cs
- BitmapSourceSafeMILHandle.cs
- OrderedDictionary.cs
- SafeMILHandle.cs
- AxisAngleRotation3D.cs
- HealthMonitoringSectionHelper.cs
- WebPartTransformer.cs
- SchemaElement.cs
- XhtmlBasicObjectListAdapter.cs
- OpCellTreeNode.cs
- MobileControlsSectionHandler.cs
- SqlTrackingQuery.cs
- SR.cs
- RoutedEventHandlerInfo.cs
- DropShadowEffect.cs
- WorkflowInlining.cs
- PhonemeConverter.cs
- ImageListImageEditor.cs
- FramingDecoders.cs
- SqlAliasesReferenced.cs
- PageStatePersister.cs
- FormsAuthenticationTicket.cs
- XmlProcessingInstruction.cs
- AttributeEmitter.cs
- QueueProcessor.cs
- SAPIEngineTypes.cs
- DesignerCatalogPartChrome.cs
- FormatterServices.cs
- NativeMethods.cs
- TypeExtensionSerializer.cs
- ProfileEventArgs.cs
- SqlUtils.cs
- FullTextBreakpoint.cs
- WebPartConnectionCollection.cs
- MetadataSerializer.cs
- Root.cs
- ApplicationServiceManager.cs