Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 17689|Відповідь: 4

[Новий випуск] C# Winform Call JS проблема

[Копіювати посилання]
Опубліковано 18.02.2020 10:30:34 | | |
Схема C# call to JS, знайдена в Інтернеті  
   публічний рядок GetTimeByJs()
        {
            Тип obj = Type.GetTypeFromProgID("ScriptControl");
            якщо (obj == null) поверне null;
            object ScriptControl = Activator.CreateInstance(obj);
            OBJ. InvokeMember("Мова", BindingFlags.SetProperty, null, ScriptControl, new object[] { "JavaScript" });
            рядок js = "function time(a, b, msg){ var sum = a + b; повернути новий Date().getTime() + ': ' + msg + ' = ' + sum }";
            OBJ. InvokeMember("AddCode", BindingFlags.InvokeMethod, null, ScriptControl, new object[] { js });
            Повернути OBJ. InvokeMember("Eval", BindingFlags.InvokeMethod, null, ScriptControl, new object[] { "time(1, 2, '1 + 2')" }). ToString();
        }   


Тест проходить нормально.
time(1, 2, '1 + 2'), де параметри, що передаються, є (число 1, число 2, рядок 1+2).
Але є питання: new object[] { "time(1, 2, '1 + 2')" }, якщо аргумент методу JS має тип byte[], як його слід записувати при виклику?





Попередній:SQLyog-12.0.9-0 з реєстраційним кодом
Наступний:Огляд завантаження ресурсу
Опубліковано 18.02.2020 10:56:17 |
Типи даних JavaScript можна поділити на дві категорії:

Примітивний тип: наприклад, Невизначений, Нуль, Булевий, Число, Рядок
Значення типу посилання, тобто тип об'єкта: тип об'єкта, наприклад Об'єкт, Масив, Функція, Дата



Аргументи JS-методів не мають байта[], все є об'єктом
Використовуйте Jurassic для виконання js-функцій у .net
https://www.itsvse.com/thread-4303-1-1.html
(Джерело: Architect_Programmer)


 Орендодавець| Опубліковано 18.02.2020 14:10:18 |
Сяо Чжажа Опубліковано 2020-2-18 10:56
Типи даних JavaScript можна поділити на дві категорії:

примітивний тип: наприклад, Undefined, Null, Boolean, Numb ...

Ао такийЯ мало знаю про JS.
Якщо
Припустимо, що параметр часової функції js — це масив
function time(Array ){....................}

Слідуйте останньому реченні цієї функції C#
Повернути OBJ. InvokeMember("Eval", BindingFlags.InvokeMethod, null, ScriptControl, new object[] { "time(????)" }). ToString();

Я хочу пройти Масив   
var mycars = новий Array();
mycars[0] = "a";
mycars[1] = "B";
mycars[2] = "c";

Якщо ви викликаєте лише JS у цій реалізації коду на C#, вам байдуже до інших методів коду. Це в цьому коді C#??? Як слід прописувати параметри?
Опубліковано 18.02.2020 14:17:06 |
zncliving Опубліковано 2020-2-18 14:10
Ао: Саме так, я мало знаю про JS.
Якщо
Припустимо, що параметр часової функції js — це масив

Я можу лише давати ідеї, а не допомагати писати код

Вам все одно потрібно самостійно дослідити код
 Орендодавець| Опубліковано 18.02.2020 14:35:32 |
Сяо Чжажа Опубліковано 2020-2-18 14:17
Я можу лише давати ідеї, а не допомагати писати код

Вам все одно потрібно самостійно дослідити код

Добре, я шукаю інформацію
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com