鑑於:
OP具有普通班的名字對應EMilitaryUnits
枚舉值聲明的名稱,並尋求一種方式創建的 一個實例對應於的_UnitType
值的枚舉名稱的類。
我的建議是建立一個靜態工廠來做到這一點,因爲類型將被固定和枚舉。下面是一個例子說明如何接近這一點。
public enum EMilitaryUnits
{
Cavalry,
CanonFodder,
// ... others
};
public interface IMilitaryUnit
{
// rest
}
public class Cavalry : IMilitaryUnit
{
public Cavalry() {}
// ... rest
}
public class CannonFodder : IMilitaryUnit
{
public CannonFodder() {}
// ... rest
}
public static MilitaryUnitFactory
{
private static readonly Dictionary<EMilitaryUnits, Func<IMilitaryUnit>> map =
new Dictionary<EMilitaryUnits, Func<IMilitaryUnit>> {
{ EMilitaryUnits.Cavalry,() => new Cavalry() },
{ EMilitaryUnits.CanonFodder,() => new CanonFodder() },
// more for the others
};
public static IMilitaryUnit Create(EMilitaryUnits kind)
{
return map[kind]();
}
}
用例:
_City.Owner.Military.AllUnits[(int)_UnitType].Add(MilitaryUnitFactory.Create(_UnitType));
什麼是你想實現這個代碼'新Object.GetType(_UnitType.ToString())'? –
op正在考慮GetType將返回輸入字符串的類型我的理解 –
看起來,OP具有常規類,其名稱對應於'EMilitaryUnits'枚舉值聲明名稱,並尋求一種方法來創建與枚舉相對應的類的實例'_UnitType'的值的名字。 – Alex