Я делаю свое собственное управление характером персонажа.Есть CharacterStatusFunction и унаследованный класс, такой как Strength, Defend, Burn и др.
public class CharacterStatusFunction : IComparable<CharacterStatusFunction> {
//Something
}
public class Strength : CharacterStatusFunction {
}
Я загружаю все унаследованные классы в CharacterStatusfunctionManage
static Dictionary<string, CharacterStatusFunction> _CharacterStatusFuncDic = new Dictionary<string, CharacterStatusFunction> ();
static List<string> _CharacterStatusFuncKeyLists = new List<string> ();
[RuntimeInitializeOnLoadMethod]
public static void InItDictionary () {
List<CharacterStatusFunction> ChrStatusFunctionLists = ReflectiveEnumerator.GetEnumerableOfType<CharacterStatusFunction> ().ToList ();
for (int i = 0; i < ChrStatusFunctionLists.Count; i++) {
_CharacterStatusFuncDic.Add (ChrStatusFunctionLists[i].ToString (), ChrStatusFunctionLists[i]);
}
Added = true;
}
И я хочу получить New CharacterStatusManagement моимObjectSlug вот так.
public static CharacterStatusFunction GetCharacterStatusFunctionByKey (string key) {
if(key == "Strength")
return new Strength{}
//something else
}
Вот проблема: я хочу получить «новый» класс, который унаследовал класс functionstatusfunction, но я не могу найти способ.Я знаю, что есть способ глубокой копии с использованием сериализации, но поскольку я не копирую значения, я думаю, что это не подходит.
public static CharacterStatusFunction GetCharacterStatusFunctionByKey (string key) {
if (_CharacterStatusFuncDic.ContainsKey (key)) {
//This Line Help
return new typeof(_CharacterStatusFuncDic[key]);
}
}