40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
using Luban.Job.Cfg.DataCreators;
|
|
using System;
|
|
using System.IO;
|
|
|
|
namespace Luban.Job.Cfg.DataSources
|
|
{
|
|
static class DataSourceFactory
|
|
{
|
|
public static AbstractDataSource Create(string url, string sheetName, Stream stream, bool exportTestData)
|
|
{
|
|
try
|
|
{
|
|
string ext = url.Contains('.') ? Path.GetExtension(url)?[1..] : url;
|
|
AbstractDataSource source;
|
|
switch (ext)
|
|
{
|
|
case "csv":
|
|
case "xls":
|
|
case "xlsx": source = new Excel.ExcelDataSource(); break;
|
|
case "xml": source = new Xml.XmlDataSource(); break;
|
|
case "lua": source = new Lua.LuaDataSource(); break;
|
|
case "json": source = new Json.JsonDataSource(); break;
|
|
case "b": source = new Binary.BinaryDataSource(); break;
|
|
default: throw new Exception($"不支持的文件类型:{url}");
|
|
}
|
|
source.Load(url, sheetName, stream, exportTestData);
|
|
return source;
|
|
}
|
|
catch (DataCreateException)
|
|
{
|
|
throw;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
throw new Exception($"文件{url} 加载失败", e);
|
|
}
|
|
}
|
|
}
|
|
}
|