Wątek przeniesiony 2018-08-16 13:56 z C# i .NET przez somekind.

Dodanie wartości do wirtualnej kolekcji

0

Witam, mam taki problem otóż mam wirtualną kolekcję

public virtual ICollection<ProduktMagazyn> Ilosc { get; set; }

Teraz w innej klasie chce wypełnić pola i przypisać zmienną z palca, ale nie mogę przekonwertować int'a na kolekcję typu ProduktMagazyn. Kolekcji też nie stworzę bo jest wirtualna i nie mogę jej instancji tworzyć. Jak mogę dodać wartości do tej kolekcji?

Produkt pierwszyProd = new Produkt()
{
    Id = 1,
    Ilosc = 2, // <------ błąd
};

Pewnie problem trywialny ale już mam wodogłowie

#Edit
Ogólnie robię testy, i właśnie w teście potrzebuje tego użyć, jakby to coś zmieniało

0

A tak nie możesz?

var p = new Produkt
{
    Id = 1,
    Ilosc = new[] { new ProduktMagazyn() }
};
0

Dalej mi jakieś błędy wyskakują, jak tu dodać w ogóle konkretną wartość?

0

Jakie "testy", jak to się nie kompiluje. A się nie kompiluje nie z kaprysu, tylko z głębokich względów - które sam zaprojektowałeś. Kolekcja to nie integer.
W popularnych obrazach: nawet nie gruszka, ale pies - pies to nie jabłko. Sądzisz, że pies jest formą jabłka?

ps. "kolekcja wirtualna" i jakoby niemożność, tu też się nie rozumiemy.

0
pavarotti napisał(a):

Dalej mi jakieś błędy wyskakują, jak tu dodać w ogóle konkretną wartość?

To może pokaż te błędy, a najlepiej pokaż szerszy kontekst kodu, bo my tu nie wróżki, kryształowych kul nie mamy.

0
pavarotti napisał(a):

Dalej mi jakieś błędy wyskakują...

wróć jak zrozumiesz, że błędy należy czytać, i można (najczęsciej tzreba) je tu napisać.

0

W sumie racja, sorrki. Screeny:

stanmagaz.png

stanmagaz2.png

I samo pole Quantity w klasie Product:

quantity.PNG

0

Tutaj: https://4programmers.net/Forum/Download/19952 nie podajesz typu dla Quantity po new, więc kompilator myśli, że chcesz utworzyć typ anonimowy, ale dalsza składnia składnia jest nieprawidłowa.

Czemu wklejasz screeny zamiast kodu?

0
somekind napisał(a):

Tutaj: https://4programmers.net/Forum/Download/19952 nie podajesz typu dla Quantity po new, więc kompilator myśli, że chcesz utworzyć typ anonimowy, ale dalsza składnia składnia jest nieprawidłowa.

Czemu wklejasz screeny zamiast kodu?

Wtedy na szybko pisałem bo chciałem za wszelką cenę to ogarnąć, bo wiedziałem że zaraz uciekam i mnie nie będzie.
Screeny zamiast kodu? dobre pytanie, będę pamiętał na przyszłość.
Czyli wyglądało by to:

BaseProd.Product firstProductItem = new BaseProd.Product ()
{
    ErpId = 1,
    Quantity = new { >?< }
}

Naprawdę nie mam pojęcia jak dodać do tej kolekcji jakąś wartość. Normanie zrobiłbym tak

ICollection<ProductWarehouseQuantity> quantities = new ICollection<ProductWarehouseQuantity>();

quantities.Add(coś tam);

BaseProd.Product firstProductItem = new BaseProd.Product ()
{
    ErpId = 1,
    Quantity = quantities[0]
}

Tylko problem jest w tym że jest to pole wirtualne i nie mogę tworzyć obiektu. Już mam dziurę w głowie

1

A co tworzenie obiektu ma do pola wirtualnego?!
Skoro wiesz, że trzeba napisać tak: ICollection<ProductWarehouseQuantity> quantities = new ICollection<ProductWarehouseQuantity>();, to czemu tutaj: Quantity = new { >?< } piszesz jakieś nawiasy po new zamiast podać typ?

0
somekind napisał(a):

A co tworzenie obiektu ma do pola wirtualnego?!
Skoro wiesz, że trzeba napisać tak: ICollection<ProductWarehouseQuantity> quantities = new ICollection<ProductWarehouseQuantity>();, to czemu tutaj: Quantity = new { >?< } piszesz jakieś nawiasy po new zamiast podać typ?

Nie wiem chyba jutro to spróbuje ogarnąć bo już nie myślę w ogóle, nie mam pojęcia jak to wykonać. Typ pewnie ICollection<ProductWarehouseQuantity>, ale może też być ProductWarehouseQuantity więc odpadam dzisiaj

0

Ok próbuję to ogarnąć dzisiaj. Tak więc jak pisałeś somekind aktualnie robię tak

BaseProd.Product secondProductItem = new BaseProd.Product()
            {
                ErplId = 2,
                Quantity = new[] { new ProductWarehouseQuantity() }
            };

teraz jak mogę nadać tej kolekcji wartość? Ja się gubię bo w tamtej encji Quantity jest typu decimal, natomiast tutaj ma więcej pól jak Available, Id itd itd. Jak nadać jej ogólną wartość?

Debugując widzę że tworzy mi jakby rekord tej kolekcji natomiast wszystko jest puste a też nie chce wypełniać poszczególnych pól tylko nadać jej konkretną wartość

1
pavarotti napisał(a):

teraz jak mogę nadać tej kolekcji wartość? Ja się gubię bo w tamtej encji Quantity jest typu decimal, natomiast tutaj ma więcej pól jak Available, Id itd itd. Jak nadać jej ogólną wartość?

Jaką ogólną wartość? :|
To jest obiekt typu ProductWarehouseQuantity. Ty wiesz, co masz w tej klasie, do czego ona służy i jak tworzyć jej obiekty. My nawet nie widzieliśmy jej kodu.
A jak chcesz mieć jedną liczbę, to zdefiniuj właściwość Quantity jako decimal.

I poczytaj jakąś książkę o podstawach, bo ewidentnie ni wiesz co to są klasy, obiekty i typy danych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1