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


C# MemberReferenceExpression.ToCodeString方法代码示例

本文整理汇总了C#中Boo.Lang.Compiler.Ast.MemberReferenceExpression.ToCodeString方法的典型用法代码示例。如果您正苦于以下问题:C# MemberReferenceExpression.ToCodeString方法的具体用法?C# MemberReferenceExpression.ToCodeString怎么用?C# MemberReferenceExpression.ToCodeString使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Boo.Lang.Compiler.Ast.MemberReferenceExpression的用法示例。


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

示例1: OnMemberReferenceExpression

 public override void OnMemberReferenceExpression(MemberReferenceExpression node)
 {
     if (PhantomDslEngine.IsCleanupMethod(node.ParentNode)) {
         ReplaceCurrentNode(new StringLiteralExpression(node.ToCodeString()));
     }
 }
开发者ID:JeremySkinner,项目名称:Phantom,代码行数:6,代码来源:ExpressionToCleanupNameStep.cs

示例2: MarkRelatedImportAsUsed

 private void MarkRelatedImportAsUsed(MemberReferenceExpression node)
 {
     string ns = null;
     foreach (var import in _currentModule.Imports)
     {
         if (ImportAnnotations.IsUsedImport(import)) continue;
         if (null == ns) ns = node.ToCodeString();
         if (import.Namespace == ns)
         {
             ImportAnnotations.MarkAsUsed(import);
             break;
         }
     }
 }
开发者ID:stuman08,项目名称:boo,代码行数:14,代码来源:ProcessMethodBodies.cs

示例3: ProcessMemberReferenceExpression

        protected virtual void ProcessMemberReferenceExpression(MemberReferenceExpression node)
        {
            IEntity member = ResolveMember(node);
            if (null == member) return;

            if (EntityType.Ambiguous == member.EntityType)
            {
                member = ResolveAmbiguousReference(node, (Ambiguous)member);
            }

            EnsureRelatedNodeWasVisited(node, member);

            if (EntityType.Namespace == member.EntityType)
            {
                string ns = null;
                foreach (Import import in _currentModule.Imports)
                {
                    if (import.NamespaceUsed) continue;
                    if (null == ns) ns = node.ToCodeString();
                    if (import.Namespace == ns)
                    {
                        import.NamespaceUsed = true;
                        break;
                    }
                }
            }

            IMember memberInfo = member as IMember;
            if (null != memberInfo)
            {
                if (!AssertTargetContext(node, memberInfo))
                {
                    Error(node);
                    return;
                }

                if (EntityType.Method != memberInfo.EntityType)
                {
                    BindExpressionType(node, GetInferredType(memberInfo));
                }
                else
                {
                    BindExpressionType(node, memberInfo.Type);
                }
            }

            if (EntityType.Property == member.EntityType)
            {
                IProperty property = (IProperty)member;
                if (IsIndexedProperty(property))
                {
                    if (!AstUtil.IsTargetOfSlicing(node)
                        && (!property.IsExtension || property.GetParameters().Length > 1))
                    {
                        Error(node, CompilerErrorFactory.PropertyRequiresParameters(
                            AstUtil.GetMemberAnchor(node),
                            member.FullName));
                        return;
                    }
                }
                if (IsWriteOnlyProperty(property) && !IsBeingAssignedTo(node))
                {
                    Error(node, CompilerErrorFactory.PropertyIsWriteOnly(
                        AstUtil.GetMemberAnchor(node),
                        member.FullName));
                }
            }
            else if (EntityType.Event == member.EntityType)
            {
                if (!AstUtil.IsTargetOfMethodInvocation(node) &&
                    !AstUtil.IsLhsOfInPlaceAddSubtract(node))
                {
                    if (CurrentType == memberInfo.DeclaringType)
                    {
                        InternalEvent ev = (InternalEvent)member;
                        node.Name = ev.BackingField.Name;
                        node.Entity = ev.BackingField;
                        BindExpressionType(node, ev.BackingField.Type);
                        return;
                    }
                    else
                    {
                        Error(node,
                              CompilerErrorFactory.EventIsNotAnExpression(node,
                                                                          member.FullName));
                    }
                }
            }

            Bind(node, member);
            PostProcessReferenceExpression(node);
        }
开发者ID:w4x,项目名称:boolangstudio,代码行数:92,代码来源:ProcessMethodBodies.cs


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