Files
zszq-trs/YLErpDAL/BLL/Calculation/Engine/OptionEngineRepository.cs
T
2024-05-09 14:06:26 +08:00

123 lines
4.1 KiB
C#

using Qdp.Pricing.Library.Common.Interfaces;
namespace YLErp.BLL.Calculation.Engine
{
public static class OptionEngineRepository
{
public static string VanillaEuropeanDefaultEngine
{
get => _vanillaEuropeanDefaultEngine;
set => _vanillaEuropeanDefaultEngine = ValidateEngine(value);
}
private static string _vanillaEuropeanDefaultEngine;
public static string VanillaAmericanDefaultEngine
{
get => _vanillaAmericanDefaultEngine;
set => _vanillaAmericanDefaultEngine = ValidateEngine(value);
}
private static string _vanillaAmericanDefaultEngine;
public static string BarrierEuropeanDefaultEngine
{
get => _barrierEuropeanDefaultEngine;
set => _barrierEuropeanDefaultEngine = ValidateEngine(value);
}
private static string _barrierEuropeanDefaultEngine;
public static string BarrierAmericanDefaultEngine
{
get => _barrierAmericanDefaultEngine;
set => _barrierAmericanDefaultEngine = ValidateEngine(value);
}
private static string _barrierAmericanDefaultEngine;
public static string BinaryEuropeanDefaultEngine
{
get => _binaryEuropeanDefaultEngine;
set => _binaryEuropeanDefaultEngine = ValidateEngine(value);
}
private static string _binaryEuropeanDefaultEngine;
public static string BinaryAmericanDefaultEngine
{
get => _binaryAmericanDefaultEngine;
set => _binaryAmericanDefaultEngine = ValidateEngine(value);
}
private static string _binaryAmericanDefaultEngine;
public static string AsianEuropeanDefaultEngine
{
get => _asianEuropeanDefaultEngine;
set => _asianEuropeanDefaultEngine = ValidateEngine(value);
}
private static string _asianEuropeanDefaultEngine;
public static string AsianAmericanDefaultEngine
{
get => _asianAmericanDefaultEngine;
set => _asianAmericanDefaultEngine = ValidateEngine(value);
}
private static string _asianAmericanDefaultEngine;
public static string RainbowDefaultEngine
{
get => _rainbowDefaultEngine;
set => _rainbowDefaultEngine = ValidateEngine(value);
}
private static string _rainbowDefaultEngine;
public static string SpreadDefaultEngine
{
get => _spreadDefaultEngine;
set => _spreadDefaultEngine = ValidateEngine(value);
}
private static string _spreadDefaultEngine;
public static string SyntheticNormalSpreadEngine
{
get => _syntheticNormalSpreadEngine;
set => _syntheticNormalSpreadEngine = ValidateEngine(value);
}
private static string _syntheticNormalSpreadEngine;
/// <summary>
/// 通过反射创建计算引擎
/// </summary>
/// <param name="engineName"></param>
/// <returns></returns>
public static IEngine CreateEngine(string engineName)
{
var type = Type.GetType(engineName);
return type.Assembly.CreateInstance(engineName) as IEngine;
}
/// <summary>
/// 判断是否为一个合法的计算引擎类型名称
/// </summary>
/// <param name="engineName"></param>
/// <returns></returns>
public static bool IsValidEngineName(this string engineName)
{
var type = Type.GetType(engineName);
if (type != null)
{
if (type.IsSubclassOf(Type.GetType("Qdp.Pricing.Library.Common.Interfaces.Engine<IOption>")))
{
return true;
}
}
return false;
}
private static string ValidateEngine(string engineClassName)
{
//if (!IsValidEngineName(engineClassName))
//{
// throw new Exception($"{engineClassName}并不是一个正确的计算引擎名称");
//}
return engineClassName;
}
}
}