Ошибка состояния подавления CS0266 Невозможно неявно преобразовать тип '' в 'System.Collections.IEnumerable' - PullRequest
1 голос
/ 17 октября 2019

Привет. Я пытаюсь получить один продукт вместо нескольких. Я обнаружил, что в Wrapper WoocomNet есть метод get вместо GetAll, поэтому я передаю идентификатор и пытаюсь загрузить его, получая правильный идентификатор, но не могу загрузить его вмой список просмотра Собираюсь показать мой код XAML и метод Wrapper


  async void ProductClicked(object sender, EventArgs args)
        {

            var btn = (Button)sender;
            var productid = btn.BindingContext;

            RestAPI rest = new RestAPI("site.com/wp-json/wc/v3/""key""secret")
             WCObject wc = new WCObject(rest);
            var p = await wc.Product.Get(Convert.ToInt32(productid));


            productsListView.ItemsSource = p;
}

Xaml


 <ListView x:Name="productsListView"
                      HasUnevenRows="True"                       
                  VerticalOptions="FillAndExpand"
                      SeparatorVisibility="None">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <ViewCell.View>
                                <Frame HasShadow="True" Margin="8">
                                    <StackLayout>
                                        <Label x:Name="something" Text="{Binding name}" FontSize="Large"/>
                                        <Image Source="{Binding ProductImage.src}"/>
                                        <Label Text="{Binding date_created, StringFormat='{0:dd/MM/yyyy}'}" FontSize="Small" FontAttributes="Italic"/>
                                        <Label Text="{Binding price }"/>
                                        <Label Text="{x:Binding enable_html_description  }" FontSize="Medium"/>
                                        <Label Text="{x:Binding sku}" FontSize="Medium"/>
                                        <Button BindingContext="{Binding id}" Clicked="ProductClicked"></Button>
                                    </StackLayout>
                                </Frame>

                            </ViewCell.View>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

Wrapper



namespace WooCommerceNET.Base
{
    public class WCItem<T>
    {
        public WCItem(RestAPI api);

        public string APIEndpoint { get; protected set; }
        public RestAPI API { get; protected set; }

        [AsyncStateMachine(typeof(WCItem<>.<Add>d__12))]
        public Task<T> Add(T item, Dictionary<string, string> parms = null);
        [AsyncStateMachine(typeof(WCItem<>.<AddRange>d__13))]
        public Task<BatchObject<T>> AddRange(BatchObject<T> items, Dictionary<string, string> parms = null);
        [AsyncStateMachine(typeof(WCItem<>.<Delete>d__17))]
        public Task<T> Delete(int id, bool force = false, Dictionary<string, string> parms = null);
        [AsyncStateMachine(typeof(WCItem<>.<DeleteRange>d__18))]
        public Task<string> DeleteRange(BatchObject<T> items, Dictionary<string, string> parms = null);
        [AsyncStateMachine(typeof(WCItem<>.<Get>d__9))]
        public Task<T> Get(int id, Dictionary<string, string> parms = null);
        [AsyncStateMachine(typeof(WCItem<>.<Get>d__10))]
        public Task<T> Get(string email, Dictionary<string, string> parms = null);
        [AsyncStateMachine(typeof(WCItem<>.<GetAll>d__11))]
        public Task<List<T>> GetAll(Dictionary<string, string> parms = null);
        [AsyncStateMachine(typeof(WCItem<>.<Update>d__14))]
        public Task<T> Update(int id, T item, Dictionary<string, string> parms = null);
        [AsyncStateMachine(typeof(WCItem<>.<UpdateRange>d__16))]
        public Task<BatchObject<T>> UpdateRange(BatchObject<T> items, Dictionary<string, string> parms = null);
        [AsyncStateMachine(typeof(WCItem<>.<UpdateWithNull>d__15))]
        public Task<T> UpdateWithNull(int id, object item, Dictionary<string, string> parms = null);
    }
}

Мой код ошибки: Код серьезности Описание ProjectОшибка состояния подавления состояния строки файла CS0266 Невозможно неявно преобразовать тип «WooCommerceNET.WooCommerce.v3.Product» в «System.Collections.IEnumerable». Существует явное преобразование (вам не хватает приведения?) Ecombeta \ Products.xaml.cs 68 Active

Мне просто нужно, чтобы исходный код productlistview был установлен в p, но я не уверен, как эти приведения работают

Если бы кто-нибудь занял минуту, я был бы очень признателен.

Спасибо

Также для Рефа, который собирался показать, как пройти весь путь


 private async Task InitAsync()
        {




            RestAPI rest = new RestAPI("http://example.com/wp-json/wc/v3/", "ck_xxxx", "cs_xxxxxxx");
            WCObject wc = new WCObject(rest);
            var products = await wc.Product.GetAll();
            var p = await wc.Product.GetAll(new Dictionary<string, string>() {
                       {"tag", Suppliers.tagid },
                    { "per_page", "80" } }); ;

                productsListView.ItemsSource = p;

        }

1 Ответ

1 голос
/ 17 октября 2019

ItemsSource можно установить только на IEnumerable, т. Е. Необходимо создать коллекцию продуктов:

productsListView.ItemsSource = new Product[1] { p };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...