Как вернуть не примитивные типы от компонента C# winrt в C ++?C#

Место общения программистов C#
Ответить
Anonymous
 Как вернуть не примитивные типы от компонента C# winrt в C ++?

Сообщение Anonymous »

В настоящее время у меня есть рабочий проект, в котором я потребляю компонент C# winrt в приложении консоли Win32, используя Winrt без регистрации. Все работает хорошо, но проблема возникает, когда я пытаюсь использовать асинхронные методы из компонента C#. Поскольку задача не является типами WinRT, я искал, чтобы найти решение. Итак, как правильный способ вызовать асинхронные методы из компонента C# winrt? Полем Я также включил «winrt/windows.foundation.h». Это построит, но ошибки во время выполнения с пугающим (IMO) классом не зарегистрировано . Это также с 2014 года. < /P>
c# Компонент Winrt: < /p>

Код: Выделить всё

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Windows.Foundation;

namespace MyComp
{
public sealed class MyLib
{
public static string OtherMethods()    // only working method
{
return "string";
}

// Below methods results with `Class not registered` error
public static IAsyncOperation TestAsync()    // I think this is the problem
{
return TestAsyncHelper().AsAsyncOperation();
}

private static async Task TestAsyncHelper()
{
// do stuff here
return "string";
}

// ******* Update ****
public static IDictionary GetMapOfNames()
{
Dictionary retval = new Dictionary();
retval.Add(1, "one");
retval.Add(2, "two");
retval.Add(3, "three");
retval.Add(42, "forty-two");
retval.Add(100, "one hundred");
return retval;
}
}
}
< /code>
 обновление < /h2>
Я заметил, что это происходит с каждым типом WinRT, который не примитивен. Я пытаюсь реализовать илист  
или Idictionary , и ни один из них также не работает. Я нашел «передача управляемых типов во время выполнения Windows, что приводит к« возврату управляемых типов из вашего компонента », но каждая попытка, которую я пробовал, привела к тому, что класс не зарегистрировался ошибка. В связанных статьях упоминается, что при передаче типов .NET в компонент WINRT он появится как соответствующий тип WinRT с другой стороны, что звучит так, как будто он должен просто работать. Я также пытался использовать iMap , но ошибки с iMap недоступны из -за уровня защиты . Я обновил пример кода.

Подробнее здесь: https://stackoverflow.com/questions/695 ... onent-to-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»