1

我已经通过 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 中。

4

0 回答 0