本文整理汇总了C#中Microsoft.CodeAnalysis.CSharp.Symbol.EnclosingThisSymbol方法的典型用法代码示例。如果您正苦于以下问题:C# Symbol.EnclosingThisSymbol方法的具体用法?C# Symbol.EnclosingThisSymbol怎么用?C# Symbol.EnclosingThisSymbol使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.CodeAnalysis.CSharp.Symbol
的用法示例。
在下文中一共展示了Symbol.EnclosingThisSymbol方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetThisParameter
private static ParameterSymbol GetThisParameter(TypeSymbol typeOfThis, NamedTypeSymbol containingType, Symbol containingMember, out LookupResultKind resultKind)
{
if ((object)containingMember == null || (object)containingType == null)
{
// not in a member of a type (can happen when speculating)
resultKind = LookupResultKind.NotReferencable;
return new ThisParameterSymbol(containingMember as MethodSymbol, typeOfThis);
}
ParameterSymbol thisParam;
switch (containingMember.Kind)
{
case SymbolKind.Method:
case SymbolKind.Field:
case SymbolKind.Property:
if (containingMember.IsStatic)
{
// in a static member
resultKind = LookupResultKind.StaticInstanceMismatch;
thisParam = new ThisParameterSymbol(containingMember as MethodSymbol, containingType);
}
else
{
if ((object)typeOfThis == ErrorTypeSymbol.UnknownResultType)
{
// in an instance member, but binder considered this/base unreferenceable
thisParam = new ThisParameterSymbol(containingMember as MethodSymbol, containingType);
resultKind = LookupResultKind.NotReferencable;
}
else
{
switch (containingMember.Kind)
{
case SymbolKind.Method:
resultKind = LookupResultKind.Viable;
thisParam = containingMember.EnclosingThisSymbol();
break;
// Fields and properties can't access 'this' since
// initializers are run in the constructor
case SymbolKind.Field:
case SymbolKind.Property:
resultKind = LookupResultKind.NotReferencable;
thisParam = containingMember.EnclosingThisSymbol() ?? new ThisParameterSymbol(null, containingType);
break;
default:
throw ExceptionUtilities.UnexpectedValue(containingMember.Kind);
}
}
}
break;
default:
thisParam = new ThisParameterSymbol(containingMember as MethodSymbol, typeOfThis);
resultKind = LookupResultKind.NotReferencable;
break;
}
return thisParam;
}