I already have created a object by Activator.CreateInstance(). How can I inject dependency that object having? As a reference, I use c# and zenject of Unity3d.
public abstract class Task
{
[Inject(Id = "Json")]
protected ISerializer Serializer;
public abstract void Execute();
public abstract void SetPacket(byte[] bytes);
}
public class LoginTask : Core.NetWork.Websocket.Task
{
private LoginResp packet;
public override void Execute()
{
Log.WriteConsole($"== ws login task execute={packet.permit}");
}
public override void SetPacket(byte[] bytes)
{
packet = serializer.Deserialize<LoginResp>(bytes);
}
}
public Task GetTask(byte header)
{
Log.WriteConsole($"== packet type={header}");
PacketType packetType = _packetType.GetType().GetFields()
.Select(field => (PacketType)field.GetValue(_packetType))
.First(p => p.Header.Equals(header));
return (Task) Activator.CreateInstance(packetType.Type);
}
I am supposed to use Activator.CreateInstance() of GetTask() for getting task. And then, I just want some serializer(which was registered in Container of zenject) to be injected into LoginTask created already.