0

私は自分自身のようなものを使ってキーを介して辞書から一般的な値を取得しようとする一般的な方法を持っています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.

これの理由は何ですか?どうすれば修正できますか?

4

2 に答える 2