gpt4 book ai didi

c# - 如何创建一个有条件定义类型的对象?

转载 作者:行者123 更新时间:2023-11-30 18:58:26 26 4
gpt4 key购买 nike

我有一系列类,每个类都有不同的属性,每个类都有一个 ID(按类型而不是按实例)。

鉴于以下情况:

public class TestEntity : EntityBase {
public override ushort ID { get; } = 1;
public override void something() { do_something(); }
}
public class OtherEntity : EntityBase {
public override ushort ID { get; } = 2;
public override void something() { something_else(); }
}

读取数据时我只有一个ushort:

ushort EntityId = BitConverter.ToUInt16(data.GetRange(CURRENT_POSITION + TILE_ENTITY_ID_OFFSET, TILE_ENTITY_ID_LENGTH).ToArray().Reverse().ToArray(), 0);

如何使用 EntityId 的值根据其值创建不同类型的对象?使用 ifswitch 语句不是一种选择,因为将有超过 200 种类型。

最佳答案

如果我理解你的问题,这里有一种解决方法(有很多)。

private static Dictionary<ushort, Type> TypeMap = new Dictionary<ushort, Type>()
{
{ 1, typeof(TestEntity) },
{ 2, typeof(OtherEntity) }
};

private EntityBase CreateEntity(ushort id)
{
var type = TypeMap[id];
return (EntityBase) Activator.CreateInstance(type);
}

关于c# - 如何创建一个有条件定义类型的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42260579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com