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
- WorkflowNamespace.cs
- BmpBitmapDecoder.cs
- EditorZoneBase.cs
- DataGridViewDataErrorEventArgs.cs
- DriveInfo.cs
- TreeNode.cs
- ListViewItem.cs
- CharEnumerator.cs
- DefaultWorkflowTransactionService.cs
- Canonicalizers.cs
- EnumMember.cs
- ParameterCollection.cs
- SelectionHighlightInfo.cs
- ASCIIEncoding.cs
- EntityDesignerDataSourceView.cs
- CookielessHelper.cs
- ReflectionPermission.cs
- FixedTextPointer.cs
- BitmapEffectGroup.cs
- TextBoxRenderer.cs
- Ref.cs
- RuntimeArgumentHandle.cs
- SQLMoney.cs
- DataGridViewRowsRemovedEventArgs.cs
- FormsIdentity.cs
- ThemeConfigurationDialog.cs
- HtmlShimManager.cs
- WindowsScroll.cs
- Automation.cs
- DataViewListener.cs
- CultureMapper.cs
- Matrix.cs
- SoapSchemaImporter.cs
- TypeConverter.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- WebPartEventArgs.cs
- QuaternionAnimationBase.cs
- DataGridRow.cs
- RtfNavigator.cs
- SafeSerializationManager.cs
- MarkupWriter.cs
- WebPartCatalogAddVerb.cs
- XmlSchemaImporter.cs
- GB18030Encoding.cs
- FactoryRecord.cs
- FontStyles.cs
- XamlTreeBuilderBamlRecordWriter.cs
- QueryStringParameter.cs
- X509PeerCertificateElement.cs
- HttpRuntimeSection.cs
- RadialGradientBrush.cs
- PermissionSetEnumerator.cs
- HttpServerVarsCollection.cs
- ConnectionPointGlyph.cs
- Win32.cs
- WebPartZone.cs
- LambdaReference.cs
- ByteStack.cs
- IndependentlyAnimatedPropertyMetadata.cs
- ExpandedWrapper.cs
- BaseTreeIterator.cs
- AnonymousIdentificationSection.cs
- WindowsSecurityTokenAuthenticator.cs
- NavigationCommands.cs
- VisualCollection.cs
- Native.cs
- ChtmlMobileTextWriter.cs
- UrlEncodedParameterWriter.cs
- ButtonRenderer.cs
- ColorTranslator.cs
- FactorySettingsElement.cs
- OutputCacheSettings.cs
- AddInToken.cs
- MethodAccessException.cs
- RequestQueue.cs
- HotCommands.cs
- CodeMethodReturnStatement.cs
- CodeCastExpression.cs
- OracleCommandSet.cs
- LinkedResourceCollection.cs
- EdgeProfileValidation.cs
- StylusCollection.cs
- MeshGeometry3D.cs
- OperationCanceledException.cs
- MeasurementDCInfo.cs
- FormatSettings.cs
- Int32CollectionConverter.cs
- MaskedTextProvider.cs
- BinHexEncoding.cs
- PlainXmlWriter.cs
- SchemaObjectWriter.cs
- Events.cs
- CodeIterationStatement.cs
- DataGridViewIntLinkedList.cs
- FamilyMap.cs
- DeploymentExceptionMapper.cs
- listitem.cs
- SqlPersonalizationProvider.cs
- PersonalizablePropertyEntry.cs
- CompositeKey.cs