本文整理汇总了C#中ProtoCore.Namespace.ElementResolver.LookupResolvedName方法的典型用法代码示例。如果您正苦于以下问题:C# ElementResolver.LookupResolvedName方法的具体用法?C# ElementResolver.LookupResolvedName怎么用?C# ElementResolver.LookupResolvedName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ProtoCore.Namespace.ElementResolver
的用法示例。
在下文中一共展示了ElementResolver.LookupResolvedName方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetCompletionsOnType
/// <summary>
/// Determines if the completion string is a valid type and
/// enumerates the list of completion members on the type
/// </summary>
/// <param name="code"> code typed in the code block </param>
/// <param name="stringToComplete"> Class name or declared variable </param>
/// <param name="resolver"></param>
/// <returns> list of method and property members of the type </returns>
internal IEnumerable<CompletionData> GetCompletionsOnType(string code, string stringToComplete, ElementResolver resolver = null)
{
IEnumerable<StaticMirror> members = null;
if (resolver != null)
{
stringToComplete = resolver.LookupResolvedName(stringToComplete) ?? stringToComplete;
}
// Determine if the string to be completed is a class
var type = GetClassType(stringToComplete);
if (type != null)
{
members = type.GetMembers();
}
// If not of class type
else
{
// Check if the string to be completed is a declared variable
string typeName = CodeCompletionParser.GetVariableType(code, stringToComplete);
if (typeName != null)
type = GetClassType(typeName);
if (type != null)
{
members = type.GetInstanceMembers();
}
}
return members.Select(x => CompletionData.ConvertMirrorToCompletionData(x));
}
示例2: VerifyResult
private void VerifyResult(string fullName, string partialName, string functionOrProperty, bool isProperty = false)
{
var testCore = thisTest.GetTestCore();
var astNodes = CoreUtils.BuildASTList(testCore, string.Format("d = {0}.{1};", partialName, functionOrProperty));
var elementResolver = new ElementResolver();
var newNodes = ElementRewriter.RewriteElementNames(testCore.ClassTable, elementResolver, astNodes);
Assert.AreEqual(string.Format("d = {0}.{1};\n", fullName, functionOrProperty), newNodes.ElementAt(0).ToString());
if (!isProperty)
{
// Add verification for contents of element resolver resolution map
var assembly = elementResolver.LookupAssemblyName(partialName);
var resolvedName = elementResolver.LookupResolvedName(partialName);
Assert.AreEqual("FFITarget.dll", assembly);
Assert.AreEqual(fullName, resolvedName);
}
}
示例3: LookupResolvedName_FromCompiler_RewriteAst
public void LookupResolvedName_FromCompiler_RewriteAst()
{
const string code = @"import (""FFITarget.dll"");";
var mirror = thisTest.RunScriptSource(code);
var testCore = thisTest.GetTestCore();
var astNodes = CoreUtils.BuildASTList(testCore, "d = ElementResolverTarget.ElementResolverTarget();");
var elementResolver = new ElementResolver();
var newNodes = ElementRewriter.RewriteElementNames(testCore.ClassTable, elementResolver, astNodes);
Assert.AreEqual("d = FFITarget.ElementResolverTarget.ElementResolverTarget();\n", newNodes.ElementAt(0).ToString());
// Add verification for contents of element resolver resolution map
Assert.AreEqual(1, elementResolver.ResolutionMap.Count);
var assembly = elementResolver.LookupAssemblyName("ElementResolverTarget");
var resolvedName = elementResolver.LookupResolvedName("ElementResolverTarget");
Assert.AreEqual("FFITarget.dll", assembly);
Assert.AreEqual("FFITarget.ElementResolverTarget", resolvedName);
}
示例4: LookupResolvedName_ForNestedNamespacesExpressionFromCompiler_RewriteAst
public void LookupResolvedName_ForNestedNamespacesExpressionFromCompiler_RewriteAst()
{
const string code = @"import (""FFITarget.dll"");";
var mirror = thisTest.RunScriptSource(code);
var testCore = thisTest.GetTestCore();
string class1 = "NestedResolverTarget";
string class2 = "ElementResolverTarget";
string fullName1 = "FFITarget.NameSpaceA.NameSpaceB.NameSpaceC.NestedResolverTarget";
string fullName2 = "FFITarget.ElementResolverTarget";
var astNodes = CoreUtils.BuildASTList(testCore, string.Format("d = {0}.Property.Method({1}.Create().Property.Method({0}.Property.Property));", class1, class2));
var elementResolver = new ElementResolver();
var newNodes = ElementRewriter.RewriteElementNames(testCore.ClassTable, elementResolver, astNodes);
Assert.AreEqual(
string.Format("d = {0}.Property.Method({1}.Create().Property.Method({0}.Property.Property));\n", fullName1, fullName2),
newNodes.ElementAt(0).ToString());
// Add verification for contents of element resolver resolution map
var assembly = elementResolver.LookupAssemblyName(class2);
var resolvedName = elementResolver.LookupResolvedName(class2);
Assert.AreEqual("FFITarget.dll", assembly);
Assert.AreEqual(fullName2, resolvedName);
///////////////////////////////////////////////
astNodes = CoreUtils.BuildASTList(testCore, string.Format("d = {0}.Property.Method({1}.Create().Property.Method({0}.Property.Property));", fullName1, fullName2));
elementResolver = new ElementResolver();
newNodes = ElementRewriter.RewriteElementNames(testCore.ClassTable, elementResolver, astNodes);
Assert.AreEqual(
string.Format("d = {0}.Property.Method({1}.Create().Property.Method({0}.Property.Property));\n", fullName1, fullName2),
newNodes.ElementAt(0).ToString());
// Add verification for contents of element resolver resolution map
assembly = elementResolver.LookupAssemblyName(fullName2);
resolvedName = elementResolver.LookupResolvedName(fullName2);
Assert.AreEqual("FFITarget.dll", assembly);
Assert.AreEqual(fullName2, resolvedName);
}
示例5: GetFunctionSignatures
/// <summary>
/// Returns the list of function signatures of all overloads of a given method
/// </summary>
/// <param name="code"> code being typed in code block </param>
/// <param name="functionName"> given method name for which signature is queried </param>
/// <param name="functionPrefix"> class name in case of constructor or static method, OR
/// declared instance variable on which method is invoked </param>
/// <param name="resolver"></param>
/// <returns> list of method overload signatures </returns>
internal IEnumerable<CompletionData> GetFunctionSignatures(string code, string functionName, string functionPrefix,
ElementResolver resolver = null)
{
IEnumerable<MethodMirror> candidates = null;
// if function is global, search for function in Built-ins
if (string.IsNullOrEmpty(functionPrefix))
{
return StaticMirror.GetOverloadsOnBuiltIns(core, functionName).
Select(x =>
{
return new CompletionData(x.MethodName, CompletionData.CompletionType.Method)
{
Stub = x.ToString()
};
});
}
// Determine if the function prefix is a class name
if (resolver != null)
{
functionPrefix = resolver.LookupResolvedName(functionPrefix) ?? functionPrefix;
}
var type = GetClassType(functionPrefix);
if (type != null)
{
candidates = type.GetOverloadsOnType(functionName);
}
// If not of class type
else
{
// Check if the function prefix is a typed identifier
string typeName = CodeCompletionParser.GetVariableType(code, functionPrefix);
if (typeName != null)
type = GetClassType(typeName);
if (type != null)
{
candidates = type.GetOverloadsOnInstance(functionName);
}
}
return candidates.Select(x => CompletionData.ConvertMirrorToCompletionData(x));
}