Dobrze, używam Visual Studio 2015 CE, zaktualizuj 2. Jeden produktywność Hack zazwyczaj robię to, że tworzę pustych klas modeli jak:Zapobiec Visual Studio z ograniczeniem metody setter do wewnętrznej
public class PersonModel
{
}
a następnie wykorzystać je w wybranej wypowiedzi jak:
db.People.Where(p => someCondition)
.Select(p => new PersonModel
{
Id = p.Id,
Name = p.Name,
//set other properties
}).ToList();
Potem idę do jeszcze nieistniejących właściwości Id
i Name
... i naciśnij Control+.
zapytać visual studio do generate property Id
dla mnie. Wszystko świetnie, ale będzie on tworzyć:
public int Id { get; internal set; }
i jeśli mogę użyć tej samej metody w modelu asp.net WebAPI wiązania, wiązanie zawiedzie milczeniu i dać mi Id = 0
.
Więc moje pytanie brzmi: czy istnieje możliwość zapytać VS stworzyć setter publicznych, tj .:
public int Id { get; set; }
Dzięki za wyjaśnienie przyczyn zachowania. Naprawdę mam nadzieję, że istnieje obejście tego, że woli 'publiczne' od' wewnętrznego' – Alireza
Nie jest dla mnie jasne, co to znaczy "ponieważ w oparciu o aktualny kod jest odpowiedni", w każdym razie, jeśli klasa jest 'Serializowalna' wewnętrzna dostępność nie pozwala na właściwą inicjalizację: 'XmlSerializer' rzuca wyjątek, ponieważ nie może uzyskać dostępu do ustawiacza. Co więcej, nie sugeruję utworzenia kolejnego zestawu w celu uniknięcia anulowania 'internal'. Byłoby miło mieć sposób na zmianę tego zachowania, –
@AngeloMascaro Jest obsługiwany przez wiązanie modelu asp.net mvc (lub web-api). Cicho ignoruje wewnętrzny ustawnik. – Alireza