Wpis z mikrobloga

#csharp #mvc
Zmusili mnie do pisania w c# i mam taki problem, mam plik json z lista obiektów, name/surname/costam
mam od tego model, i potrzebuje tak:
- Ładując, załadować cały plik z wszystkimi fieldami.
- Wysyłając z kontrolera chcę pominąć ten 1 wybrany field.

Jakieś sugestie? Znam c# od 3 dni, więc liczę na coś w miarę prostego ( ͡° ͜ʖ ͡°) (ale znam javę, więc wszo jako-tako ogarniam)
  • 7
@Maav: z JsonIgnore zignoruje mi tego fielda też przy ładowaniu ;/ To już próbowałem.
A z DTO i anonimowymi nie wiem o co ci tutaj chodzi, i jak to sensownie zapisać ;/
@GotoFinal: DTO to inaczej DataTransferObject. Model transportowy POCO, który zawiera tylko pola. Właśnie do takich sytuacji jak Twoja, kiedy chcesz coś pominąć i np. oszczędzić na transferze
Masz Usera, który zawiera 3 pola: Id, Username, Password.
Tworzysz ModelDTO, który zawiera 2 pola: Id, Username i przepisujesz odpowiednie pola z jednego na drugi (albo używasz AutoMappera).

Możesz też stworzyć klasę anonimową w ten sposób:
var anonymousModel = new { Id = model.Id,
@GotoFinal: Jak koniecznie nie chcesz używać AutoMappera (choć uważam, że warto), to możesz sobie na szybko naklepać własny prymitywny automaper z użyciem refleksji (to działa pod warunkiem użycia tych samych nazw właściwości):

foreach (var propertyInfo in typeof(SomeClassVM).GetProperties())
{
var val = typeof(SomeClass).GetProperty(propertyInfo.Name).GetValue(test);
typeof(SomeClassVM).GetProperty(propertyInfo.Name).SetValue(testVm, val);
}