Uwp C++/WinRT无法将参数1从';winrt::com_ptr<;至>';至';winrt::数组_视图<;施工单位8_t>;

Uwp C++/WinRT无法将参数1从';winrt::com_ptr<;至>';至';winrt::数组_视图<;施工单位8_t>;,uwp,c++-winrt,winrt-component,Uwp,C++ Winrt,Winrt Component,我正在用C++/winrt为uwp创建一个winrt组件。我定义了一个runtimeclass,比如 namespace TagLibUWP { [bindable] [default_interface] runtimeclass Picture { Picture(); UInt8[] Data{ get; set; }; } } Error C2664 'auto winrt::impl::consume

我正在用C++/winrt为uwp创建一个winrt组件。我定义了一个runtimeclass,比如

namespace TagLibUWP
{
    [bindable]
    [default_interface]
    runtimeclass Picture 
    {
        Picture();
        UInt8[] Data{ get; set; };
    }
}
Error   C2664    'auto winrt::impl::consume_TagLibUWP_IPicture<winrt::TagLibUWP::IPicture>::Data(winrt::array_view<const uint8_t>) const': 
cannot convert argument 1 from 'winrt::com_ptr<To>' to 'winrt::array_view<const uint8_t>'
        with
        [
            To=uint8_t []
        ]   BlankApp1   C:\Users\Cool-\source\repos\Test\TagLib\BlankApp1\Generated Files\XamlTypeInfo.g.cpp    88  
然后cppwinrt编译器生成如下代码

struct Picture : PictureT<Picture>
    {
        Picture() = default;

        com_array<uint8_t> Data();
        void Data(array_view<uint8_t const> value);
    };
结构图片:图片集 { Picture()=默认值; com_数组数据(); 无效数据(数组\视图值); }; winrt组件已编译,但当另一个UWP应用程序(使用C++/winrt编写)引用该组件时,该应用程序无法编译

这个错误就像吹了一样

namespace TagLibUWP
{
    [bindable]
    [default_interface]
    runtimeclass Picture 
    {
        Picture();
        UInt8[] Data{ get; set; };
    }
}
Error   C2664    'auto winrt::impl::consume_TagLibUWP_IPicture<winrt::TagLibUWP::IPicture>::Data(winrt::array_view<const uint8_t>) const': 
cannot convert argument 1 from 'winrt::com_ptr<To>' to 'winrt::array_view<const uint8_t>'
        with
        [
            To=uint8_t []
        ]   BlankApp1   C:\Users\Cool-\source\repos\Test\TagLib\BlankApp1\Generated Files\XamlTypeInfo.g.cpp    88  
错误C2664“自动winrt::impl::consume_TagLibUWP_ipacture::Data(winrt::array_view)const':
无法将参数1从“winrt::com\u ptr”转换为“winrt::array\u view”
具有
[
To=uint8\u t[]
]BlankApp1 C:\Users\Cool-\source\repos\Test\TagLib\BlankApp1\Generated Files\XamlTypeInfo.g.cpp 88
让我困惑的是,uwp应用程序(用C#编写)是可以编译的

简言之,我只想替换C++/CX中的数组。我找到了,这不是我想要的。我想知道的是如何在MIDL3.0中定义字节数组的属性。我已经试过像上面那样做了,但似乎我不能像上面那样做。

有人能帮我解决这个问题吗

能否显示调用属性设置器的代码?使用data types.template void SetReferenceTypeMember_data(::winrt::Windows::Foundation::IInspectable const&instance,::winrt::Windows::Foundation::IInspectable const&value){instance.as().data(value.as());}如果我删除[bindable]属性,这行代码仍然不足以诊断问题。什么是
TValue
?您是否通过绑定来分配数据?什么是您的XAML?我不需要通过绑定分配给数据。当我移除[bindable]时,它就可以工作了,这就是我想要的。“数据”只是一个可以获取和设置的简单属性。