Я пытаюсь изучить Angular с помощью Aspnet Core и смотрю на проект, созданный по умолчанию в шаблоне Visual Studio 2017 по умолчанию.
Контроллер объявляет класс WeatherForecast
и возвращает IEnumerable<WeatherForecast>
-
[HttpGet("[action]")]
public IEnumerable<WeatherForecast> WeatherForecasts()
{
var rng = new Random();
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
DateFormatted = DateTime.Now.AddDays(index).ToString("d"),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
});
}
public class WeatherForecast
{
public string DateFormatted { get; set; }
public int TemperatureC { get; set; }
public string Summary { get; set; }
public int TemperatureF
{
get
{
return 32 + (int)(TemperatureC / 0.5556);
}
}
}
И затем угловой компонент, который вызывает вышеуказанный код и отображает IEnumerable<WeatherForecast>
, находится ниже -
export class FetchDataComponent
{
public forecasts: WeatherForecast[];
constructor(http: HttpClient, @Inject('BASE_URL') baseUrl: string) {
http.get<WeatherForecast[]>(baseUrl + 'api/SampleData/WeatherForecasts')
.subscribe(result =>{ this.forecasts = result; }, error => console.error(error));
}
interface WeatherForecast
{
dateFormatted: string;
temperatureC: number;
temperatureF: number;
summary: string;
}
Как вы заметили, класс WeatherForecast
объявляется дважды - один раз в бэкэнде .net, а затем снова в угловом компоненте!
У меня вопрос: при работе с AspetCore и Angular всегда ли нам нужно объявлять все сущности (или ViewModels, в зависимости от того, что применимо) как WeatherForecast
class дважды? Если да, то это похоже на многократное дублирование усилий и, вероятно, нарушение режима СУХОЙ?