Song.ViewData/ExecuteMethod.cs
(开头部分) 18KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Song.ViewData.Attri;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace Song.ViewData
{
/// <summary>
/// 执行具体的方法
/// </summary>
public class ExecuteMethod
{
#region 单件模式
private static readonly ExecuteMethod _instance = new ExecuteMethod();
private ExecuteMethod() { }
/// <summary>
/// 返回实例
/// </summary>
/// <returns></returns>
public static ExecuteMethod GetInstance()
{
return _instance;
}
#endregion
#region 创建并缓存实例对象
//存储对象的键值对,key为对象的类名称(全名),value为对象自身
private Dictionary<string, object> _objects = new Dictionary<string, object>();
/// <summary>
/// 创建对象,如果存在,则直接返回;如果不存在,创建后返回
/// </summary>
/// <param name="letter"></param>
/// <returns></returns>
public static IViewAPI CreateInstance(Letter letter)
{
string assemblyName = "Song.ViewData";
string classFullName = String.Format("{0}.Methods.{1}", assemblyName, letter.ClassName);
IViewAPI obj = null;
//由缓存中查找,是否存在
ExecuteMethod curr = ExecuteMethod.GetInstance();
foreach (KeyValuePair<string, object> kv in curr._objects)
{
if (classFullName.Trim().Equals(kv.Key, StringComparison.CurrentCultureIgnoreCase))
{
obj = (IViewAPI)kv.Value;
break;
}
}
if (obj != null) return obj;
//如果之前未创建,则重新创建
Type type = null;
Assembly assembly = Assembly.Load(assemblyName);
Type[] types = assembly.GetExportedTypes()
后面还有 383 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
