Объявление массива байтов как общедоступного члена

Я разрабатываю приложение для Windows Phone 8, и мне нужно передать массив байтов из фонового агента в приложение переднего плана.

Для этого я пишу интерфейс на C++/CX, который будет реализован на C# и будет вызываться фоновым процессом.

Интерфейс объявлен как:

public interface class IStatusListener
{
   void OnNewData(byte data[], int length);
};

Но я получаю ошибку, как

«подпись открытого члена содержит собственный тип« байт [] »»

Как здесь объявить массив байтов?


person Arctic    schedule 28.05.2014    source источник


Ответы (2)


Решил это, переписав интерфейс:

public interface class IStatusListener
{
   void OnNewData(Platform::Array<byte>^* data);
};
person Arctic    schedule 28.05.2014

Ваши общедоступные классы WinRT не могут использовать типы, отличные от RT, в своей общедоступной подписи. Это то, с чем люди очень часто сталкиваются, когда начинают писать компоненты WinRT. Например, см. код ниже.

class Native { };

public ref class MyRef sealed
{
private:
        voidFoo1(Native n) { } // <--This is fine

public:
        voidFoo2(Native n) { } // <--This won't compile
};
person Muhammad Zaighum    schedule 28.05.2014
comment
Понятно, но в вашем ответе не указан обходной путь. - person Arctic; 28.05.2014