当前位置: 首页>>代码示例>>C#>>正文


C# IFieldReference类代码示例

本文整理汇总了C#中IFieldReference的典型用法代码示例。如果您正苦于以下问题:C# IFieldReference类的具体用法?C# IFieldReference怎么用?C# IFieldReference使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


IFieldReference类属于命名空间,在下文中一共展示了IFieldReference类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Mangle

    internal string Mangle(IFieldReference field) {
      Contract.Requires(field != null);

      field.ResolvedField.Dispatch(this); //compute the hash
      var sb = new StringBuilder();
      sb.Append('_');
      sb.Append((uint)this.hash);
      sb.Append('_');
      this.AppendSanitizedName(sb, field.Name.Value);
      return sb.ToString();
    }
开发者ID:mestriga,项目名称:Microsoft.CciSamples,代码行数:11,代码来源:Mangler.cs

示例2: ReplacementMethodConstructionContext

        public ReplacementMethodConstructionContext(IMetadataHost host, IFieldReference originalField, IMethodDefinition fakeMethod, BlockStatement block, bool isAssignment, ILogger log, IReplaceableReference originalReference)
        {
            this.host = host;
            this.block = block;
            this.originalField = originalField;
            this.isAssignment = isAssignment;
            this.log = log;
            this.originalReference = originalReference;

            fakeMethodParameters = fakeMethod.Parameters;
            returnType = fakeMethod.Type;
        }
开发者ID:jamarchist,项目名称:SharpMock,代码行数:12,代码来源:ReplacementMethodConstructionContext.cs

示例3: Visit

        public override void Visit(IFieldReference fieldReference)
        {
            if (!alreadySeen.Add(fieldReference))
            {
                return;
            }

            IUnitReference definingUnit = MetadataWriter.GetDefiningUnitReference(fieldReference.GetContainingType(Context), Context);
            if (definingUnit != null && ReferenceEquals(definingUnit, this.module))
            {
                return;
            }

            this.Visit((ITypeMemberReference)fieldReference);
            this.Visit(fieldReference.GetType(Context));
            ReserveFieldToken(fieldReference);
        }
开发者ID:elemk0vv,项目名称:roslyn-1,代码行数:17,代码来源:ReferenceIndexer.cs

示例4: TryGetFirstFieldReference

        /// <summary>
        /// Tries to get the first field reference in the method body
        /// </summary>
        /// <param name="body"></param>
        /// <param name="field"></param>
        /// <returns></returns>
        public static bool TryGetFirstFieldReference(IMethodBody body, out IFieldReference field)
        {
            Contract.Requires(body != null);
            Contract.Ensures(!Contract.Result<bool>() || Contract.ValueAtReturn(out field) != null);

            foreach (var operation in body.Operations)
            {
                if (operation.OperationCode == OperationCode.Stfld ||
                    operation.OperationCode == OperationCode.Ldfld)
                {
                    field = (IFieldReference)operation.Value;
                    return field != null;
                }
            }

            field = null;
            return false;
        }
开发者ID:mestriga,项目名称:Microsoft.CciSamples,代码行数:24,代码来源:CcsHelper.cs

示例5: TraverseChildren

        public override void TraverseChildren(IFieldReference fieldReference)
        {
            log.WriteTrace("Visiting field: {0}.", fieldReference.Name.Value);

            var replaceableField = fieldReference.AsReplaceable(ReplaceableReferenceTypes.FieldAccessor);

            if (registry.IsRegistered(replaceableField))
            {
                var replacementMethodToCall = registry.GetReplacement(replaceableField);

                var replacementExpression = new MethodCall();
                replacementExpression.Type = replacementMethodToCall.Type;
                replacementExpression.Arguments = new List<IExpression>();
                replacementExpression.MethodToCall = replacementMethodToCall;
                replacementExpression.IsStaticCall = true;

                var expressionStatement = parent as ExpressionStatement;
                if (expressionStatement != null)
                {
                    var assignment = expressionStatement.Expression as Assignment;
                    if (assignment != null)
                    {
                        var source = assignment.Source as BoundExpression;
                        if (source != null)
                        {
                            var assignmentSource = source.Definition as FieldReference;
                            if (assignmentSource != null)
                            {
                                if (fieldReference.ResolvedField.Equals(assignmentSource.ResolvedField))
                                {
                                    assignment.Source = replacementExpression;
                                }
                            }
                        }
                    }
                }

                var returnStatement = parent as ReturnStatement;
                if (returnStatement != null)
                {
                    returnStatement.Expression = replacementExpression;
                }
            }
        }
开发者ID:jamarchist,项目名称:SharpMock,代码行数:44,代码来源:FieldReferenceVisitor.cs

示例6: CreateFieldVariable

    /// <summary>
    /// Creates a fresh BPL variable to represent <paramref name="field"/>, deciding
    /// on its type based on the heap representation.
    /// </summary>
    public override Bpl.Variable CreateFieldVariable(IFieldReference field) {
      Bpl.Variable v;
      string fieldname = MemberHelper.GetMemberSignature(field, NameFormattingOptions.DocumentationId);
      
      fieldname = TranslationHelper.TurnStringIntoValidIdentifier(fieldname);
      Bpl.IToken tok = field.Token();
      Bpl.Type t = this.sink.CciTypeToBoogie(field.Type.ResolvedType);

      if (field.ResolvedField.IsStatic) {
        Bpl.TypedIdent tident = new Bpl.TypedIdent(tok, fieldname, t);
        v = new Bpl.GlobalVariable(tok, tident);
      }
      else {
        Bpl.Type mt = new Bpl.MapType(tok, new List<Bpl.TypeVariable>(), new List<Bpl.Type>(new Bpl.Type[] {this.RefType}), t);
        Bpl.TypedIdent tident = new Bpl.TypedIdent(tok, fieldname, mt);
        v = new Bpl.GlobalVariable(tok, tident);
      }
      return v;
    }
开发者ID:lleraromero,项目名称:bytecodetranslator,代码行数:23,代码来源:Heap.cs

示例7: TraverseChildren

        public override void TraverseChildren(IFieldReference fieldReference)
        {
            log.WriteTrace("Visiting field: {0}.", fieldReference.Name.Value);

            var replaceableField = fieldReference.AsReplaceable(ReplaceableReferenceTypes.FieldAssignment);

            if (registry.IsRegistered(replaceableField))
            {
                var replacementMethodToCall = registry.GetReplacement(replaceableField);

                var replacementExpression = new MethodCall();
                replacementExpression.Type = replacementMethodToCall.Type;
                replacementExpression.Arguments = new List<IExpression>();
                replacementExpression.MethodToCall = replacementMethodToCall;
                replacementExpression.IsStaticCall = true;

                var expressionStatement = parent as ExpressionStatement;
                if (expressionStatement != null)
                {
                    var assignment = expressionStatement.Expression as Assignment;
                    if (assignment != null)
                    {
                        var target = assignment.Target.Definition as FieldReference;
                        if (target != null)
                        {
                            // If the target is what we're visiting ...
                            if (target.ResolvedField.Equals(fieldReference.ResolvedField))
                            {
                                if (!fieldReference.ResolvedField.IsStatic)
                                {
                                    replacementExpression.Arguments.Add(assignment.Target.Instance);
                                }

                                replacementExpression.Arguments.Add(assignment.Source);
                                expressionStatement.Expression = replacementExpression;
                            }
                        }
                    }
                }
            }
        }
开发者ID:jamarchist,项目名称:SharpMock,代码行数:41,代码来源:FieldAssignmentVisitor.cs

示例8: TraverseUnspecialized

 /// <summary>
 /// Traverses the unspecialized field reference.
 /// </summary>
 private void TraverseUnspecialized(IFieldReference fieldReference)
 {
     Contract.Requires(fieldReference != null);
       Contract.Requires(!(fieldReference is ISpecializedFieldReference));
       if (!this.objectsThatHaveAlreadyBeenTraversed.Add(fieldReference)) return;
       if (this.preorderVisitor != null) this.preorderVisitor.Visit(fieldReference);
       if (this.stopTraversal) return;
       this.TraverseChildren(fieldReference);
       if (this.stopTraversal) return;
       if (this.postorderVisitor != null) this.postorderVisitor.Visit(fieldReference);
 }
开发者ID:rasiths,项目名称:visual-profiler,代码行数:14,代码来源:Visitors.cs

示例9: TraverseChildren

 /// <summary>
 /// Traverses the children of the field reference.
 /// </summary>
 public virtual void TraverseChildren(IFieldReference fieldReference)
 {
     Contract.Requires(fieldReference != null);
       //field reference attributes are distinct from field definition attributes. When a definition serves as a reference, the reference is assumed to be unattributed.
       if (!(fieldReference is IFieldDefinition))
     this.Traverse(fieldReference.Attributes);
       this.Traverse(fieldReference.ContainingType);
       if (this.stopTraversal) return;
       if (fieldReference.IsModified) {
     this.Traverse(fieldReference.CustomModifiers);
     if (this.stopTraversal) return;
       }
       this.Traverse(fieldReference.Type);
 }
开发者ID:rasiths,项目名称:visual-profiler,代码行数:17,代码来源:Visitors.cs

示例10: Visit

 //^ ensures this.path.Count == old(this.path.Count);
 /// <summary>
 /// Performs some computation with the given field reference.
 /// </summary>
 /// <param name="fieldReference"></param>
 public virtual void Visit(IFieldReference fieldReference)
 {
     if (this.stopTraversal) return;
       this.Visit((ITypeMemberReference)fieldReference);
       //^ int oldCount = this.path.Count;
       this.path.Push(fieldReference);
       if (fieldReference.IsModified)
     this.Visit(fieldReference.CustomModifiers);
       //^ assume this.path.Count == oldCount+1; //True because all of the virtual methods of this class promise not decrease this.path.Count.
       this.path.Pop();
 }
开发者ID:rasiths,项目名称:visual-profiler,代码行数:16,代码来源:Visitors.cs

示例11: TraverseChildren

        public override void TraverseChildren(IFieldReference fieldReference)
{ MethodEnter(fieldReference);
            base.TraverseChildren(fieldReference);
     MethodExit();   }
开发者ID:Refresh06,项目名称:visualmutator,代码行数:4,代码来源:DebugCodeTraverser.cs

示例12: GetFieldReferenceInternedId

    uint GetFieldReferenceInternedId(IFieldReference fieldReference) {
      Contract.Requires(fieldReference != null);

      uint containingTypeReferenceInternedId = this.GetTypeReferenceInternId(fieldReference.ContainingType);
      uint fieldTypeInternedId;
      if (fieldReference.IsModified)
        fieldTypeInternedId = this.GetModifiedTypeReferenceInternId(fieldReference.Type, fieldReference.CustomModifiers);
      else
        fieldTypeInternedId = this.GetTypeReferenceInternId(fieldReference.Type);
      uint fieldNameId = (uint)fieldReference.Name.UniqueKey;
      var fieldsForType = this.FieldReferenceHashtable.Find(containingTypeReferenceInternedId);
      if (fieldsForType == null) {
        fieldsForType = new DoubleHashtable();
        this.FieldReferenceHashtable.Add(containingTypeReferenceInternedId, fieldsForType);
      }
      uint result = fieldsForType.Find(fieldNameId, fieldTypeInternedId);
      if (result == 0) {
        result = this.CurrentFieldReferenceInternValue++;
        fieldsForType.Add(fieldNameId, fieldTypeInternedId, result);
      }
      return result;
    }
开发者ID:Refresh06,项目名称:visualmutator,代码行数:22,代码来源:Core.cs

示例13: Visit

 /// <summary>
 /// Performs some computation with the given field reference.
 /// </summary>
 public void Visit(IFieldReference fieldReference)
 {
     this.Visit((ITypeMemberReference)fieldReference);
     if (fieldReference.InternedKey == 0)
       this.ReportError(MetadataError.IncompleteNode, fieldReference, "InternedKey");
     if (fieldReference.Type is Dummy)
       this.ReportError(MetadataError.IncompleteNode, fieldReference, "Type");
     var resolvedField = fieldReference.ResolvedField;
     if (!(resolvedField is Dummy) && fieldReference.InternedKey != resolvedField.InternedKey)
       this.ReportError(MetadataError.FieldReferenceResolvesToDifferentField, fieldReference);
 }
开发者ID:rasiths,项目名称:visual-profiler,代码行数:14,代码来源:Validator.cs

示例14: ReserveFieldToken

 protected override void ReserveFieldToken(IFieldReference fieldReference)
 {
     this.metadataWriter.GetFieldToken(fieldReference);
 }
开发者ID:ehsansajjad465,项目名称:roslyn,代码行数:4,代码来源:ReferenceIndexer.cs

示例15: ReserveFieldToken

 protected override void ReserveFieldToken(IFieldReference fieldReference)
 {
 }
开发者ID:elemk0vv,项目名称:roslyn-1,代码行数:3,代码来源:ReferenceIndexer.cs


注:本文中的IFieldReference类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。