我有一个通用方法,试图使用我自己的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和IL2CPP,就可以使用它>
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.
这可能是什么原因,我该如何解决?
我有一个通用方法,试图使用我自己的TryGetValue通过键从字典中获得通用值,例如(当然,对基本方法有很多限制)public class BaseExample {public ...
经过进一步研究并测试出为什么会发生这种情况的结论如下: