rename EcsInject to DI

This commit is contained in:
Mikhail 2024-11-05 12:18:55 +08:00
parent 7690c190f9
commit 295f668c7f
2 changed files with 28 additions and 21 deletions

View File

@ -3,14 +3,21 @@
namespace DCFApixels.DragonECS namespace DCFApixels.DragonECS
{ {
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Method, Inherited = false, AllowMultiple = false)] [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Method, Inherited = false, AllowMultiple = false)]
public sealed class EcsInjectAttribute : Attribute public class DIAttribute : Attribute
{ {
public static readonly EcsInjectAttribute Dummy = new EcsInjectAttribute(null); public static readonly DIAttribute Dummy = new DIAttribute(null);
public readonly Type notNullDummyType; public readonly Type notNullDummyType;
public EcsInjectAttribute(Type notNullDummyType = null) public DIAttribute(Type notNullDummyType = null)
{ {
this.notNullDummyType = notNullDummyType; this.notNullDummyType = notNullDummyType;
} }
} }
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Method, Inherited = false, AllowMultiple = false)]
[Obsolete("Use DI attribute")]
public sealed class EcsInjectAttribute : DIAttribute
{
public EcsInjectAttribute(Type notNullDummyType = null) : base(notNullDummyType) { }
}
} }

View File

@ -36,7 +36,7 @@ namespace DCFApixels.DragonECS
_systemProperties.Add(propertType, list); _systemProperties.Add(propertType, list);
} }
list.Add(new InjectedPropertyRecord(system, property)); list.Add(new InjectedPropertyRecord(system, property));
if (property.GetAutoInjectAttribute() != EcsInjectAttribute.Dummy) if (property.GetAutoInjectAttribute() != DIAttribute.Dummy)
{ {
_notInjected.Add(propertType); _notInjected.Add(propertType);
} }
@ -56,12 +56,12 @@ namespace DCFApixels.DragonECS
{ {
const BindingFlags bindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; const BindingFlags bindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
result.AddRange(type.GetFields(bindingFlags) result.AddRange(type.GetFields(bindingFlags)
.Where(o => isAgressiveInjection || o.GetCustomAttribute<EcsInjectAttribute>() != null) .Where(o => isAgressiveInjection || o.GetCustomAttribute<DIAttribute>() != null)
.Select(o => new InjectedField(o))); .Select(o => new InjectedField(o)));
result.AddRange(type.GetProperties(bindingFlags) result.AddRange(type.GetProperties(bindingFlags)
.Where(o => .Where(o =>
{ {
if (!isAgressiveInjection && o.GetCustomAttribute<EcsInjectAttribute>() == null) if (!isAgressiveInjection && o.GetCustomAttribute<DIAttribute>() == null)
{ {
return false; return false;
} }
@ -74,7 +74,7 @@ namespace DCFApixels.DragonECS
result.AddRange(type.GetMethods(bindingFlags) result.AddRange(type.GetMethods(bindingFlags)
.Where(o => .Where(o =>
{ {
if (!isAgressiveInjection && o.GetCustomAttribute<EcsInjectAttribute>() == null) if (!isAgressiveInjection && o.GetCustomAttribute<DIAttribute>() == null)
{ {
return false; return false;
} }
@ -173,7 +173,7 @@ namespace DCFApixels.DragonECS
{ {
public readonly IEcsProcess target; public readonly IEcsProcess target;
public readonly IInjectedProperty property; public readonly IInjectedProperty property;
public EcsInjectAttribute Attribute { get { return property.GetAutoInjectAttribute(); } } public DIAttribute Attribute { get { return property.GetAutoInjectAttribute(); } }
public InjectedPropertyRecord(IEcsProcess target, IInjectedProperty property) public InjectedPropertyRecord(IEcsProcess target, IInjectedProperty property)
{ {
this.target = target; this.target = target;
@ -235,22 +235,22 @@ namespace DCFApixels.DragonECS
{ {
bool IsInjected { get; } bool IsInjected { get; }
Type PropertyType { get; } Type PropertyType { get; }
EcsInjectAttribute GetAutoInjectAttribute(); DIAttribute GetAutoInjectAttribute();
void Inject(object target, object value); void Inject(object target, object value);
} }
internal class InjectedField : IInjectedProperty internal class InjectedField : IInjectedProperty
{ {
private FieldInfo _member; private FieldInfo _member;
private EcsInjectAttribute _injectAttribute; private DIAttribute _injectAttribute;
public bool IsInjected { get; private set; } public bool IsInjected { get; private set; }
public Type PropertyType { get { return _member.FieldType; } } public Type PropertyType { get { return _member.FieldType; } }
public InjectedField(FieldInfo member) public InjectedField(FieldInfo member)
{ {
_member = member; _member = member;
_injectAttribute = member.GetCustomAttribute<EcsInjectAttribute>(); _injectAttribute = member.GetCustomAttribute<DIAttribute>();
if (_injectAttribute == null) { _injectAttribute = EcsInjectAttribute.Dummy; } if (_injectAttribute == null) { _injectAttribute = DIAttribute.Dummy; }
} }
public EcsInjectAttribute GetAutoInjectAttribute() { return _injectAttribute; } public DIAttribute GetAutoInjectAttribute() { return _injectAttribute; }
public void Inject(object target, object value) public void Inject(object target, object value)
{ {
_member.SetValue(target, value); _member.SetValue(target, value);
@ -260,16 +260,16 @@ namespace DCFApixels.DragonECS
internal class InjectedProperty : IInjectedProperty internal class InjectedProperty : IInjectedProperty
{ {
private PropertyInfo _member; private PropertyInfo _member;
private EcsInjectAttribute _injectAttribute; private DIAttribute _injectAttribute;
public bool IsInjected { get; private set; } public bool IsInjected { get; private set; }
public Type PropertyType { get { return _member.PropertyType; } } public Type PropertyType { get { return _member.PropertyType; } }
public InjectedProperty(PropertyInfo member) public InjectedProperty(PropertyInfo member)
{ {
_member = member; _member = member;
_injectAttribute = member.GetCustomAttribute<EcsInjectAttribute>(); _injectAttribute = member.GetCustomAttribute<DIAttribute>();
if (_injectAttribute == null) { _injectAttribute = EcsInjectAttribute.Dummy; } if (_injectAttribute == null) { _injectAttribute = DIAttribute.Dummy; }
} }
public EcsInjectAttribute GetAutoInjectAttribute() { return _injectAttribute; } public DIAttribute GetAutoInjectAttribute() { return _injectAttribute; }
public void Inject(object target, object value) public void Inject(object target, object value)
{ {
_member.SetValue(target, value); _member.SetValue(target, value);
@ -279,18 +279,18 @@ namespace DCFApixels.DragonECS
internal class InjectedMethod : IInjectedProperty internal class InjectedMethod : IInjectedProperty
{ {
private MethodInfo _member; private MethodInfo _member;
private EcsInjectAttribute _injectAttribute; private DIAttribute _injectAttribute;
private Type propertyType; private Type propertyType;
public bool IsInjected { get; private set; } public bool IsInjected { get; private set; }
public Type PropertyType { get { return propertyType; } } public Type PropertyType { get { return propertyType; } }
public InjectedMethod(MethodInfo member) public InjectedMethod(MethodInfo member)
{ {
_member = member; _member = member;
_injectAttribute = member.GetCustomAttribute<EcsInjectAttribute>(); _injectAttribute = member.GetCustomAttribute<DIAttribute>();
propertyType = _member.GetParameters()[0].ParameterType; propertyType = _member.GetParameters()[0].ParameterType;
if (_injectAttribute == null) { _injectAttribute = EcsInjectAttribute.Dummy; } if (_injectAttribute == null) { _injectAttribute = DIAttribute.Dummy; }
} }
public EcsInjectAttribute GetAutoInjectAttribute() { return _injectAttribute; } public DIAttribute GetAutoInjectAttribute() { return _injectAttribute; }
public void Inject(object target, object value) public void Inject(object target, object value)
{ {
_member.Invoke(target, new object[] { value }); _member.Invoke(target, new object[] { value });