Обработка моделей ONNX / ML.NET с универсальными интерфейсами

Пожалуйста, попробуйте ниже код: конкатенация $ var и $ str с использованием точки (.)

 $var = 'variable';
 $newvar = "Name\\Branch\\".$var
2
задан Sven.L 6 March 2019 в 10:10
поделиться

1 ответ

Отличная работа на MCVE. Я смог призвать SampleMethod; Оказывается, в этом нет ничего особенного, и это, вероятно, менее сложно, чем вы себе представляли.

В вашем примере, объект, который вы получаете, howToCastThis, имеет тип, который уже закрыт. Пока вы начинаете с типа этого экземпляра, вам не нужно использовать MakeGenericMethod.

Допустим, у вас есть экземпляр объекта, compileTimeTypeUnknownInstance, для параметра, который вы хотите передать SampleMethod. Поскольку System.IO.TextReader является абстрактным, compileTimeTypeUnknownInstance должен быть конкретного, TextReader -производного типа. При соблюдении этих условий выполняются следующие работы:

var sampleMethod = howToCastThis.GetType().GetMethods()
    .Single(mi => mi.Name == "SampleMethod");

sampleMethod.Invoke(howToCastThis, new object[] { compileTimeTypeUnknownInstance });

SampleMethod сообщает, что T относится к типу System.Text.TextReader.

Опять же, howToCastThis имеет тип с близким построением, поэтому, как и метод, который вы хотите.

Примечание. Хотя это и не тот случай, метод закрытого типа может вводить дополнительные аргументы типа, поэтому вам все равно придется вызывать MakeGenericMethod для закрытия метода в этом случае.

Теперь, если бы я попытался перевести это в вашу ситуацию, я думаю, это выглядело бы примерно так:

var predictMethod = predictionEngine.GetType().GetMethods()
    .Single(mi => mi.Name == "Predict");

float prediction = (float)predictMethod.Invoke(predictionEngine, new object[] { inputValue });

Я не уверен насчет синтаксиса в вашем вызове псевдокода для Predict. Я предположил, что inputValue был единственным параметром, а genericInputClass был только там, чтобы указать, что это был аргумент типа в типе с закрытым построением. Если это неверно, вам нужно выяснить, что на самом деле входит в этот аргумент object[].

0
ответ дан madreflection 6 March 2019 в 10:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: