本文整理汇总了C#中IReference.Select方法的典型用法代码示例。如果您正苦于以下问题:C# IReference.Select方法的具体用法?C# IReference.Select怎么用?C# IReference.Select使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IReference
的用法示例。
在下文中一共展示了IReference.Select方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetReferences
public IReference[] GetReferences(ITreeNode element, IReference[] oldReferences)
{
var expression = element as ICSharpExpression;
if (expression != null)
{
if (oldReferences != null && oldReferences.Length > 0)
{
if (oldReferences
.Select(reference => reference as IReflectedReference)
.All(reference => reference != null && reference.GetTreeNode() == expression && reference.IsInternalValid))
{
return oldReferences;
}
}
expression.AssertIsValid("element is not valid");
if (expression.ConstantValue.IsString())
{
var argument = expression.GetContainingNode<IArgument>();
if (argument != null && argument.Expression == expression)
{
var argumentsOwner = argument.Invocation as IInvocationExpression;
if (argumentsOwner != null)
{
var invokedExpression = argumentsOwner.InvokedExpression as IReferenceExpression;
if (invokedExpression != null && invokedExpression.QualifierExpression != null)
{
var declaredType = invokedExpression.QualifierExpression.Type() as IDeclaredType;
if (declaredType != null && declaredType.GetClrName().FullName == "System.Type")
{
var kind = GetMemberKind(argumentsOwner);
if (kind != null)
{
var parameter = argument
.IfNotNull(d => d.MatchingParameter)
.IfNotNull(p => p.Element);
if (parameter != null && parameter.ShortName == "name")
{
return new IReference[]
{
new ReflectedMemberReference(kind.Value, expression, argumentsOwner)
};
}
}
}
}
}
}
}
}
return EmptyArray<IReference>.Instance;
}