using HStation.RevitDev.RevitDataExport.Parser;
|
using HStation.RevitDev.RevitDataExport.Utils;
|
using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
using System.Reflection;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace HStation.RevitDev.RevitDataExport.Utility
|
{
|
public class ParserManager : Singleton<ParserManager>
|
{
|
private List<BaseParser> _parsers;
|
public List<BaseParser> Parsers
|
{
|
get
|
{
|
if (_parsers == null)
|
{
|
_parsers = CreateParsers();
|
}
|
return _parsers;
|
}
|
}
|
private List<BaseParser> CreateParsers()
|
{
|
var parsers = new List<BaseParser>();
|
// 加载程序集
|
Assembly assembly = Assembly.GetExecutingAssembly();
|
// 程序集扫描,获取全部规则检查者信息
|
var allType = assembly.GetTypes().ToList();
|
|
var types = allType.FindAll(type => type.IsSubclassOf(typeof(BaseParser)));
|
|
if (types == null || types.Count() == 0) { return parsers; }
|
foreach (Type type in types)
|
{
|
var instance = Activator.CreateInstance(type) as BaseParser;
|
parsers.Add(instance);
|
}
|
return parsers;
|
}
|
|
public BaseParser GetParser(string parserName)
|
{
|
foreach (var parser in _parsers)
|
{
|
if (parser.GetParserName().Equals(parserName))
|
{
|
return parser;
|
}
|
}
|
return null;
|
}
|
}
|
}
|