Как проверить изнутри функцию Rust, вызывается ли она напрямую или Invoke () из кода C #? - PullRequest
0 голосов
/ 09 сентября 2018

Я вызываю функцию Rust в нативной DLL из C # следующим образом:

[DLLImport("rust.dll")]
public static int Foo(int i);
public static void Invoke() {
    typeof(Program).GetMethod("Foo").Invoke(new object[] {null}, new object[] {1});
}
public static void Call() {
    Foo(1);
}

Я хочу проверить, вызывается ли метод напрямую или с помощью Invoke. Если он вызывается, метод должен вывести "Invoked", если нет, он должен вывести "Called". Я не совсем уверен, сможете ли вы различить эти две вещи.

1 Ответ

0 голосов
/ 09 сентября 2018

Нет, это невозможно, если не сделать что-то очень странное, что определенно не будет переносимым, надежным на будущее или каким-либо иным способом.

Внутри Rust вызов функции - это вызов функции, независимо от того, какой внешний API был использован для его вызова.

...