UWP System.InvalidCastException: невозможно преобразовать COM-объект - PullRequest
0 голосов
/ 08 июня 2018

У меня есть приложение UWP, предназначенное для FCU.С сегодняшнего дня я получаю следующее исключение:

System.InvalidCastException: Unable to cast COM object of type 'System.__ComObject' to class type 'System.String'. Instances of types that represent COM components cannot be cast to types that do not represent COM components; however they can be cast to interfaces as long as the underlying COM component supports QueryInterface calls for the IID of the interface.
   at MoneyFox.Windows.Views.AccountListView.AccountListView_obj1_Bindings.Update_CurrentBalance(Double obj, Int32 phase)
   at MoneyFox.Windows.

Насколько я вижу, это происходит, как только должна обновиться привязка с типом double к TextBlock.Но я ничего не изменил в этом коде.

У меня последняя версия VS 15.7.3.Также я попытался настроить таргетинг на разные платформы и разные версии Microsoft.NETCore.UniversalWindowsPlatform (в настоящее время 6.0.8).

Ссылка на репозиторий: https://github.com/NPadrutt/MoneyFox.Windows/tree/XamarinFormsNew

Что это может быть?

1 Ответ

0 голосов
/ 12 июня 2018

Я обнаружил проблему ... У меня есть конвертер, который реализует IValueConverter от Xamarin.Forms, а также наследует от MvxValueConverter, поэтому я могу использовать его для привязок форм Xamarin, а также для моего приложения UWP без XF.

public class AmountFormatConverter : MvxValueConverter, IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        // Converter Logic
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    {
        // Convert Back Logic
    }
}

Моя проблема заключалась в том, что я не установил ключевое слово Override для реализованных методов.Похоже, что вызвало проблему.

public class AmountFormatConverter : MvxValueConverter, IValueConverter
{
    public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        // Converter Logic
    }

    public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    {
        // Convert Back Logic
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...