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
- MSAANativeProvider.cs
- TextServicesPropertyRanges.cs
- TimeZone.cs
- Internal.cs
- MessageSmuggler.cs
- XmlBinaryReader.cs
- DirectoryInfo.cs
- Page.cs
- DbConnectionPoolIdentity.cs
- DocumentOrderQuery.cs
- FieldNameLookup.cs
- TreeIterators.cs
- SharedDp.cs
- GridViewSelectEventArgs.cs
- MenuItemStyleCollectionEditor.cs
- FixUpCollection.cs
- ShaderEffect.cs
- ReadOnlyDictionary.cs
- XmlText.cs
- ResolveNextArgumentWorkItem.cs
- Encoder.cs
- ZipIOLocalFileBlock.cs
- SafeEventLogWriteHandle.cs
- QilTypeChecker.cs
- TraceContextRecord.cs
- UpdateProgress.cs
- ServiceDiscoveryElement.cs
- NameValueCollection.cs
- DesignerForm.cs
- bindurihelper.cs
- BitmapEncoder.cs
- TextParentUndoUnit.cs
- SamlSubject.cs
- ValidationManager.cs
- ThicknessAnimation.cs
- SqlExpressionNullability.cs
- ScriptResourceMapping.cs
- BehaviorEditorPart.cs
- DnsPermission.cs
- DialogResultConverter.cs
- OleDbTransaction.cs
- FormsAuthenticationModule.cs
- ValidationSummary.cs
- ResourceWriter.cs
- RadioButtonDesigner.cs
- DataGridViewCell.cs
- DatatypeImplementation.cs
- EntityReference.cs
- PeerPresenceInfo.cs
- input.cs
- NotifyCollectionChangedEventArgs.cs
- TransformProviderWrapper.cs
- ListContractAdapter.cs
- GlyphRunDrawing.cs
- ScrollBarRenderer.cs
- RijndaelCryptoServiceProvider.cs
- HyperLinkField.cs
- RouteValueDictionary.cs
- Stack.cs
- TreeBuilderBamlTranslator.cs
- Internal.cs
- FixedPageStructure.cs
- TextEditorMouse.cs
- FixedStringLookup.cs
- RemoteHelper.cs
- BindingCollection.cs
- XmlSchemaSubstitutionGroup.cs
- Schema.cs
- CollectionAdapters.cs
- ResourceReferenceExpression.cs
- SqlServices.cs
- ApplicationSecurityManager.cs
- SR.cs
- TextLine.cs
- TransformerConfigurationWizardBase.cs
- WriteFileContext.cs
- SqlParameterizer.cs
- DataGridViewColumn.cs
- XmlSchemaComplexType.cs
- ErrorHandlingAcceptor.cs
- ControlParser.cs
- DefaultTraceListener.cs
- PageCache.cs
- XmlAnyAttributeAttribute.cs
- MatrixStack.cs
- StaticSiteMapProvider.cs
- DescendentsWalker.cs
- objectquery_tresulttype.cs
- CrossSiteScriptingValidation.cs
- WebUtil.cs
- NativeMethods.cs
- CompilationLock.cs
- FontDriver.cs
- LayoutTable.cs
- PropertyGridView.cs
- ObjectAssociationEndMapping.cs
- SettingsPropertyNotFoundException.cs
- AggregateException.cs
- InputQueueChannelAcceptor.cs
- CriticalFinalizerObject.cs