Syntriax.Engine/Engine.Core/Factory/StateEnableFactory.cs

23 lines
653 B
C#

using Syntriax.Engine.Core.Abstract;
using Syntriax.Engine.Core.Exceptions;
namespace Syntriax.Engine.Core.Factory;
public class StateEnableFactory
{
public static IStateEnable Instantiate(IEntity entity) => Instantiate<StateEnable>(entity);
public static T Instantiate<T>(IEntity entity, params object?[]? args) where T : class, IStateEnable
{
T stateEnable = TypeFactory.Get<T>(args);
if (!entity.Assign(stateEnable))
throw AssignException.From(entity, stateEnable);
if (!stateEnable.Assign(entity))
throw AssignException.From(stateEnable, entity);
return stateEnable;
}
}