У меня есть общий c метод для попытки получить общее c значение из словаря с помощью ключа, используя мой собственный TryGetValue
лайк (конечно, сильно обрезанный до необходимого)
public class BaseExample
{
public virtual bool TryGetValue<T>(string key, out T value)
{
value = default;
return false;
}
}
public class Example : BaseExample
{
private Dictionary<string, Item> _items = new Dictionary<string, Item>();
public override bool TryGetValue<T>(string key, out T value)
{
value = default;
if (!GetItem(key, value, out var setting)) { return false; }
value = (T)setting.Value;
return true;
}
private bool GetItem<T>(string key, T value, out Item item)
{
item = null;
if (!_items.ContainsKey(key))
{
item = null;
return false;
}
item = _items[key];
return true;
}
}
Это работает в редакторе Unity, но как только это будет построено для UWP и IL2 CPP, как только я попытаюсь запустить метод, например,
var value = example.TryGetValue<int>("SomeKey");
, он выдает
System.ExecutionEngineException: Attempting to call method 'Example::TryGetValue<System.Int32>' for which no ahead of time (AOT) code was generated.
В чем может быть причина и как это исправить?