Код: Выделить всё
using ClassReflectionKit.Models;
namespace ClassReflectionKit.Helpers;
public interface IClassReflectionKitHelper
{
TemplateClassInfo? GetClassInfo(string ns, string className);
//TemplateClassInfo? GetClassInfo(string ns, string className, ProcessClassInfo procDelegate);
string[] GetNameSpaces();
IEnumerable GetNSClasses(string ns);
IEnumerable GetNSClasses(string ns, ProcessNSClasses procDelegate);
IEnumerable GetNSClasses(string ns, ProcessNSClasses procDelegate, ProcessClassInfo procClassDelegate);
void InitializeFromCodeInputs(params string[] codeItems);
void InitializeFromFilePaths(params string[] filePaths);
bool IsCodeSnippetValid(string codeSnippet);
}
< /code>
Что на самом деле делает, чтобы разрешить определение вспомогательных классов, которые могут манипулировать существующим кодом C# и получать информацию о метаданных.[JSExport]
public class ClassReflectionKitHelper : IClassReflectionKitHelper
{
private Dictionary NamespaceSyntaxTrees { get; set; } = new();
private SyntaxTree GetFileSyntaxTree(string filePath)
{
}
public void InitializeFromFilePaths(params string[] filePaths)
{
}
public void InitializeFromCodeInputs(params string[] codeItems)
{
}
public string[] GetNameSpaces()
{
}
public virtual TemplateClassInfo? GetClassInfo(string ns, string className)
{
}
public virtual TemplateClassInfo? GetClassInfo(string ns, string className, ProcessClassInfo procDelegate)
{
}
public virtual IEnumerable GetNSClasses(string ns)
{
}
public virtual IEnumerable GetNSClasses(string ns, ProcessNSClasses procDelegate)
{
}
public virtual IEnumerable GetNSClasses(string ns, ProcessNSClasses procDelegate, ProcessClassInfo procClassDelegate)
{
}
bool IClassReflectionKitHelper.IsCodeSnippetValid(string codeSnippet)
{
}
}
< /code>
(я снял фактическую реализацию для моего класса и оставил только схему) В настоящее время, если я создаю проект, определения типографии для ClassReflectionKithelper сгенерированы. < /P>
ProcessNSClassesКод: Выделить всё
namespace ClassReflectionKit.Models;
[JSExport("ProcessClassInfo")]
public delegate TemplateClassInfo? ProcessClassInfo(TemplateClassInfo? classInfo);
[JSExport("ProcessNSClasses")]
public delegate IEnumerable ProcessNSClasses(IEnumerable classes);
< /code>
Если я попытаюсь экспортировать интерфейс, также используя атрибут jsexport Я получаю следующую ошибку < /p>
ClassReflectionKit failed with 3 error(s) (0,8s)
Microsoft.JavaScript.NodeApi.Generator.ModuleGenerator\ClassReflectionKit.NodeApi.g.cs(693,80): error CS0103: The name 'from_ClassReflectionKit_Models_ProcessNSClasses' does not exist in the current context
Microsoft.JavaScript.NodeApi.Generator\Microsoft.JavaScript.NodeApi.Generator.ModuleGenerator\ClassReflectionKit.NodeApi.g.cs(706,80): error CS0103: The name 'from_ClassReflectionKit_Models_ProcessNSClasses' does not exist in the current context
error CS0103: The name 'from_ClassReflectionKit_Models_ProcessClassInfo' does not exist in the current context
Подробнее здесь: https://stackoverflow.com/questions/796 ... -api-usage