Связывание времени выполнения Windows Mono с приложением

beTheSameInstanceAs(CardSuit.HEART) возвращает Matcher<CardSuit>, поэтому оно не может совпадать с произвольным ICardSuit. Это имеет смысл (хотя Matcher может быть против -варианта, здесь вам понадобится ковариация). Но вы можете:

  1. Звонить явно beTheSameInstanceAs<ICardSuit>(CardSuit.HEART).

  2. Создайте вспомогательную функцию

    inline fun <T1, reified T2 : T1> Matcher<T2>.widen() = object : Matcher<T1>() {
        override fun test(value: T1) = 
            if (value is T2) 
                this.test(value) 
            else 
                Result(false, "$value is not a ${T2::class.name}", "$value is a ${T2::class.name}")
    }
    

    и вызовите

    it should beTheSameInstanceAs(CardSuit.HEART).widen()
    

    (я думаю, здесь должен работать вывод типов).

  3. Поскольку beTheSameInstanceAs(x) действительно может соответствовать чему угодно, объявите эквивалентную функцию, которая возвращает Matcher<Any>:

    fun beTheSameInstanceAsAny(x: Any) = beTheSameInstanceAs(x)
    
    // usage
    "HEART" -> it should beTheSameInstanceAsAny(CardSuit.HEART)
    
8
задан Community 23 May 2017 в 11:51
поделиться

2 ответа

Краткий ответ: да.

Вещи, о которых следует позаботиться при программировании, -

  1. Не используйте API платформы
  2. Не жестко кодируйте разделители каталогов и имен файлов, т. е. не жестко кодируйте пути к файлам, а используйте подходящий класс для получения разделителя путей, а затем объединяйте имена. дела чувствительны и на винде нет. Хотя программирование не ссылается на тот же файл, что и log.txt и Log.txt, но сохраняет его все маленьким.

Кроме того, если вы создали приложение GTK # в системе * nx, вы сможете запустить его на Windows, если вы установили сборку GTK #, и наоборот.

Я сделал это сам, и все заработало, как и ожидалось. У меня была проблема, чтобы найти конкретную версию GTK # для сборки на Windows, и это заняло у меня несколько часов.

6
ответ дан 5 December 2019 в 21:21
поделиться

В общем, вы, вероятно, просто использовали бы .Net runtime в Windows. Установщик GTK # для .Net доступен на странице загрузки Mono . Вашим пользователям нужно будет установить это, а затем запустить ваше приложение, используя обычную среду выполнения .Net.

1
ответ дан 5 December 2019 в 21:21
поделиться
Другие вопросы по тегам:

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