我已经通过 Activator.CreateInstance() 创建了一个对象。如何注入该对象具有的依赖项?作为参考,我使用了 Unity3d 的 c# 和 zenject。
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);
}
我应该使用 GetTask() 的 Activator.CreateInstance() 来获取任务。然后,我只想将一些序列化程序(在 zenject 的容器中注册)注入到已经创建的 LoginTask 中。