2021-12-28 08:18:24 +08:00
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
2022-02-19 22:37:57 +08:00
|
|
|
namespace XCharts.Runtime
|
2021-12-28 08:18:24 +08:00
|
|
|
{
|
|
|
|
|
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
|
|
|
|
|
public sealed class SerieExtraComponentAttribute : Attribute
|
|
|
|
|
{
|
|
|
|
|
public readonly List<Type> types = new List<Type>();
|
|
|
|
|
|
|
|
|
|
public SerieExtraComponentAttribute()
|
2022-05-22 22:17:38 +08:00
|
|
|
{ }
|
2021-12-28 08:18:24 +08:00
|
|
|
public SerieExtraComponentAttribute(Type type1)
|
|
|
|
|
{
|
2022-05-22 22:17:38 +08:00
|
|
|
AddType(type1);
|
2021-12-28 08:18:24 +08:00
|
|
|
}
|
|
|
|
|
public SerieExtraComponentAttribute(Type type1, Type type2)
|
|
|
|
|
{
|
2022-05-22 22:17:38 +08:00
|
|
|
AddType(type1);
|
|
|
|
|
AddType(type2);
|
2021-12-28 08:18:24 +08:00
|
|
|
}
|
|
|
|
|
public SerieExtraComponentAttribute(Type type1, Type type2, Type type3)
|
|
|
|
|
{
|
2022-05-22 22:17:38 +08:00
|
|
|
AddType(type1);
|
|
|
|
|
AddType(type2);
|
|
|
|
|
AddType(type3);
|
2021-12-28 08:18:24 +08:00
|
|
|
}
|
|
|
|
|
public SerieExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4)
|
|
|
|
|
{
|
2022-05-22 22:17:38 +08:00
|
|
|
AddType(type1);
|
|
|
|
|
AddType(type2);
|
|
|
|
|
AddType(type3);
|
|
|
|
|
AddType(type4);
|
2021-12-28 08:18:24 +08:00
|
|
|
}
|
|
|
|
|
public SerieExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5)
|
|
|
|
|
{
|
2022-05-22 22:17:38 +08:00
|
|
|
AddType(type1);
|
|
|
|
|
AddType(type2);
|
|
|
|
|
AddType(type3);
|
|
|
|
|
AddType(type4);
|
|
|
|
|
AddType(type5);
|
2021-12-28 08:18:24 +08:00
|
|
|
}
|
|
|
|
|
public SerieExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5, Type type6)
|
|
|
|
|
{
|
2022-05-22 22:17:38 +08:00
|
|
|
AddType(type1);
|
|
|
|
|
AddType(type2);
|
|
|
|
|
AddType(type3);
|
|
|
|
|
AddType(type4);
|
|
|
|
|
AddType(type5);
|
|
|
|
|
AddType(type6);
|
2021-12-28 08:18:24 +08:00
|
|
|
}
|
|
|
|
|
public SerieExtraComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5, Type type6, Type type7)
|
|
|
|
|
{
|
2022-05-22 22:17:38 +08:00
|
|
|
AddType(type1);
|
|
|
|
|
AddType(type2);
|
|
|
|
|
AddType(type3);
|
|
|
|
|
AddType(type4);
|
|
|
|
|
AddType(type5);
|
|
|
|
|
AddType(type6);
|
|
|
|
|
AddType(type7);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void AddType(Type type)
|
|
|
|
|
{
|
|
|
|
|
if (!Serie.extraComponentMap.ContainsKey(type))
|
|
|
|
|
throw new ArgumentException("Serie not support extra component:" + type);
|
|
|
|
|
types.Add(type);
|
2021-12-28 08:18:24 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool Contains<T>() where T : ISerieExtraComponent
|
|
|
|
|
{
|
|
|
|
|
return Contains(typeof(T));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool Contains(Type type)
|
|
|
|
|
{
|
|
|
|
|
return types.Contains(type);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|