C# ASP.NET MVC - pytanie o ViewBag

Odpowiedz Nowy wątek
2017-10-31 18:16
Zielony Ogórek
0

Dzień dobry!,
mam pytanie, zacząłem się uczyć c# asp.net. Przekazałem parametr do widoku poprzez przypisanie go do ViewBag. Analizując kod zauważyłem że jest to obiekt zadeklarowany w taki sposób:

        public dynamic ViewBag { get; }

I tutaj powjawia się moje pytanie, dlaczego linijka typu :

ViewBag.Test = "Test";

Działa, skoro nie ma w nim słowa "set" ?
I jeszcze jedno pytanie, wiecie może jak to jest zrobione że w zmiennej ViewBag można stworzyć pole Test ? Jest to jakiś złożony typ danych ?

Z góry dziękuję za odpowiedź : ).

Pozostało 580 znaków

2017-10-31 18:28
1

Działa, skoro nie ma w nim słowa "set" ?
I jeszcze jedno pytanie, wiecie może jak to jest zrobione że w zmiennej ViewBag można stworzyć pole Test ? Jest to jakiś złożony typ danych ?

Ta linijka ViewBag.Test = "Test"; nie ma nic wspólnego z setterem o którym mówisz. Bez settera nie możesz zrobić np. ViewBag = new Class1().
Co do drugiego pytania to po prostu tak działa dynamic w C#. Tutaj więcej o tym https://docs.microsoft.com/en[...]ge-reference/keywords/dynamic

edytowany 2x, ostatnio: error91, 2017-10-31 18:29

Pozostało 580 znaków

2017-10-31 20:50
0

Samo dynamic tak nie działa, jest za tym jeszcze trochę więcej magii a mianowicie specjalny obiekt pod spodem o czym można poczytać chociażby tutaj:
How ViewBag in ASP.NET MVC works


#Dżunior React Devloper wanna be#
edytowany 1x, ostatnio: neves, 2017-10-31 20:51

Pozostało 580 znaków

2017-11-01 00:18
Zielony Ogórek
0

Dziękuję za odpowiedzi, przeczytałem : )
Jednak dalej nie wiem dlaczego bez setera można ustawić obiekt, obstawiam że geter zwraca referencję do obiektu i dlatego można na nim działać ? Dlaczego jak jest, geter nie powinien zwrócić wartości? ( przesiadam się z c++ i jest to dla mnie nie jasne )

Pozostało 580 znaków

2017-11-01 07:05
0

Tak zwraca referencję, w C++ o tym czy używać referencji decydujemy w momencie używania danego obiektu za pomocą operatora &. Natomiast w C# decydujemy w momencie pisania definicji typu - dla wszystkich obiektów typów zdefiniowanych przez słówko kluczowe "class" odwołujemy się za pomocą referencji, kolejny materiał do przeczytania :) :
Choosing Between Class and Struct

a tutaj jest nawet specjalna książka dla programistów C++ przechodzących na C#:
.NET Book Zero What the C or C++ Programmer Needs to Know About C# and the .NET Framework


#Dżunior React Devloper wanna be#
edytowany 1x, ostatnio: neves, 2017-11-01 07:10

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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