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
- DefaultProxySection.cs
- ReaderWriterLockSlim.cs
- WeakReferenceList.cs
- ServiceModelConfiguration.cs
- TreeViewBindingsEditorForm.cs
- WebReferencesBuildProvider.cs
- SelectedDatesCollection.cs
- DataAdapter.cs
- CodeArrayCreateExpression.cs
- DataBoundControlAdapter.cs
- XmlCustomFormatter.cs
- PersonalizablePropertyEntry.cs
- ProcessHostMapPath.cs
- RemotingClientProxy.cs
- CanonicalizationDriver.cs
- SplineQuaternionKeyFrame.cs
- DataGridTextBoxColumn.cs
- DataSourceView.cs
- XmlQualifiedName.cs
- RuntimeWrappedException.cs
- Transform.cs
- InputLanguageProfileNotifySink.cs
- HMACRIPEMD160.cs
- Context.cs
- ResourceAttributes.cs
- CredentialCache.cs
- WebBrowserUriTypeConverter.cs
- PrivilegedConfigurationManager.cs
- xmlsaver.cs
- ModifierKeysConverter.cs
- ModelItem.cs
- DeflateEmulationStream.cs
- ToolStripArrowRenderEventArgs.cs
- MediaElement.cs
- MultiBindingExpression.cs
- ITreeGenerator.cs
- MatrixTransform3D.cs
- ImageFormatConverter.cs
- MsiStyleLogWriter.cs
- HttpAsyncResult.cs
- XPathNavigator.cs
- PathGeometry.cs
- TextSelectionProcessor.cs
- CreateInstanceBinder.cs
- UInt32.cs
- PenThread.cs
- CodeDefaultValueExpression.cs
- DeviceFilterDictionary.cs
- JsonSerializer.cs
- HandlerMappingMemo.cs
- RegionData.cs
- ProvidePropertyAttribute.cs
- ToolStripOverflowButton.cs
- unsafenativemethodstextservices.cs
- WmfPlaceableFileHeader.cs
- Rijndael.cs
- MessageHeaderDescriptionCollection.cs
- SchemaAttDef.cs
- SqlConnectionPoolProviderInfo.cs
- AnnotationComponentManager.cs
- DataControlFieldHeaderCell.cs
- AutomationProperties.cs
- MimeObjectFactory.cs
- MailHeaderInfo.cs
- SoapDocumentMethodAttribute.cs
- ErrorEventArgs.cs
- XmlAutoDetectWriter.cs
- StatusBar.cs
- ListSortDescriptionCollection.cs
- OLEDB_Enum.cs
- Parameter.cs
- OrthographicCamera.cs
- EventEntry.cs
- DeferredElementTreeState.cs
- webeventbuffer.cs
- MetadataPropertyCollection.cs
- StrokeSerializer.cs
- CompositeFontInfo.cs
- DataSourceControl.cs
- TypeExtensionSerializer.cs
- ObjectManager.cs
- OleAutBinder.cs
- KerberosSecurityTokenAuthenticator.cs
- SystemIPInterfaceStatistics.cs
- PowerModeChangedEventArgs.cs
- DesignerActionService.cs
- ItemsPresenter.cs
- COM2ColorConverter.cs
- TextEndOfParagraph.cs
- TextBoxRenderer.cs
- SqlServices.cs
- GroupItem.cs
- XPathAncestorIterator.cs
- SubpageParagraph.cs
- XamlGridLengthSerializer.cs
- HttpRequestWrapper.cs
- Border.cs
- mda.cs
- TdsRecordBufferSetter.cs
- HttpHeaderCollection.cs