代码拉取完成,页面将自动刷新
// -----------------------------------------------------------------------
// <copyright company="Fireasy"
// email="faib920@126.com"
// qq="55570729">
// (c) Copyright Fireasy. All rights reserved.
// </copyright>
// -----------------------------------------------------------------------
using Fireasy.Common.Extensions;
using Fireasy.Common.ObjectActivator;
using Microsoft.Extensions.DependencyInjection;
namespace Fireasy.Common.Compiler
{
/// <summary>
/// 缺省的代码编译器管理器。
/// </summary>
public class DefaultCodeCompilerManager : ICodeCompilerManager
{
private readonly Dictionary<string, Type> _languageMappers = new(new StringIgnoreCaseComparer());
private class StringIgnoreCaseComparer : IEqualityComparer<string>
{
public bool Equals(string x, string y)
{
return string.Compare(x, y, true) == 0;
}
public int GetHashCode(string obj)
{
return obj?.GetHashCode() ?? 0;
}
}
/// <summary>
/// 初始化 <see cref="DefaultCodeCompilerManager"/> 类新实例。
/// </summary>
public DefaultCodeCompilerManager()
{
Register<CSharpCodeCompiler>("csharp", "c#");
}
/// <summary>
/// 注册指定语言类型的代码编译器类型。
/// </summary>
/// <typeparam name="TCompiler"></typeparam>
/// <param name="languages">语言。</param>
public void Register<TCompiler>(params string[] languages) where TCompiler : ICodeCompiler
{
foreach (var language in languages)
{
_languageMappers.AddOrReplace(language, typeof(TCompiler));
}
}
/// <summary>
/// 创建代码编译器。
/// </summary>
/// <param name="language">语言。</param>
/// <returns></returns>
public ICodeCompiler? CreateCompiler(string language)
{
if (_languageMappers.TryGetValue(language, out var compilerType))
{
return Activator.CreateInstance(compilerType) as ICodeCompiler;
}
return null;
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。