1) Использовать файл конфигурации приложения для User-specific настроек
Web.config
файл есть у каждого ASP.NET-приложения (а у десктопного - App.config
) на уровне проекта (не путать с Web.config
в папке Views)2) Использовать ресурсы для хранения UI-строк
<h3>@Localization.Get("Contacts_PageHeader")</h3>
Т.е. есть ситуация - у меня есть класс с 150 переменными (int), я хочу непосредственно эти переменные менять, передавая её в другой класс
НО мне что, 150 функций
// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
//
// using QuickType;
//
// var data = GettingStarted.FromJson(jsonString);
//
// For POCOs visit quicktype.io?poco
//
namespace QuickType
{
using System;
using System.Net;
using System.Collections.Generic;
using Newtonsoft.Json;
public partial class GettingStarted
{
[JsonProperty("measures")]
public Measures Measures { get; set; }
[JsonProperty("number2")]
public Number2 Number2 { get; set; }
[JsonProperty("items")]
public Items Items { get; set; }
[JsonProperty("number1")]
public Number1 Number1 { get; set; }
[JsonProperty("user")]
public User User { get; set; }
}
public partial class Measures
{
[JsonProperty("2")]
public OtherThe1 The2 { get; set; }
[JsonProperty("1")]
public OtherThe1 The1 { get; set; }
[JsonProperty("3")]
public OtherThe1 The3 { get; set; }
}
public partial class OtherThe1
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("title")]
public string Title { get; set; }
}
public partial class Number2
{
[JsonProperty("2")]
public OtherOtherOtherThe1 The2 { get; set; }
[JsonProperty("1")]
public OtherOtherOtherThe1 The1 { get; set; }
[JsonProperty("3")]
public OtherOtherOtherThe1 The3 { get; set; }
}
public partial class OtherOtherOtherThe1
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("parent")]
public string Parent { get; set; }
[JsonProperty("title")]
public string Title { get; set; }
}
public partial class Items
{
[JsonProperty("2")]
public The1 The2 { get; set; }
[JsonProperty("1")]
public The1 The1 { get; set; }
[JsonProperty("3")]
public The1 The3 { get; set; }
}
public partial class The1
{
[JsonProperty("measure")]
public string Measure { get; set; }
[JsonProperty("number")]
public string Number { get; set; }
[JsonProperty("foxproID")]
public string FoxproID { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("producer")]
public string Producer { get; set; }
[JsonProperty("suodID")]
public string SuodID { get; set; }
}
public partial class Number1
{
[JsonProperty("2")]
public OtherOtherThe1 The2 { get; set; }
[JsonProperty("1")]
public OtherOtherThe1 The1 { get; set; }
[JsonProperty("3")]
public OtherOtherThe1 The3 { get; set; }
}
public partial class OtherOtherThe1
{
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
}
public partial class User
{
[JsonProperty("login")]
public string Login { get; set; }
[JsonProperty("ip")]
public string Ip { get; set; }
[JsonProperty("number")]
public long Number { get; set; }
}
public partial class GettingStarted
{
public static GettingStarted FromJson(string json) => JsonConvert.DeserializeObject<GettingStarted>(json, Converter.Settings);
}
public static class Serialize
{
public static string ToJson(this GettingStarted self) => JsonConvert.SerializeObject(self, Converter.Settings);
}
public class Converter
{
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
DateParseHandling = DateParseHandling.None,
};
}
}
Объект обладает состояние и поведение (Гради Буч)
Состояние объекта характеризуется перечнем (обычно статическим) всех свойств данного объекта и текущими (обычно динамическими) значениями каждого из этих свойств. (Гради Буч)
Поведение - это то, как объект действует и реагирует; поведение выражается в терминах состояния объекта и передачи сообщений. Иными словами, поведение объекта - это его наблюдаемая и проверяемая извне
деятельность. (Гради Буч)
Свойство — это член, предоставляющий гибкий механизм для чтения, записи или вычисления значения частного поля. Свойства можно использовать, как если бы они были членами общих данных, но фактически они представляют собой специальные методы, называемые методами доступа. Это позволяет легко получать доступ к данным и помогает повысить безопасность и гибкость методов. (Свойства MSDN)
Свойства позволяют обращаться к методу в исходном тексте программы, используя упрощенный синтаксис. (Рихтер, глава 9, стр. 204 по книге)
Осторожный подход к определению свойств. Лично мне свойства не нравятся, и я был бы рад, если бы их поддержку убрали из Microsoft .NET Framework и сопутствующих языков программирования. Причина в том, что свойства выглядят как поля, на самом деле являясь методами. Это по рождает массу заблуждений и непонимания. Столкнувшись с кодом, обращающимся к полю, разработчик привычно предполагает наличие массы условий, которые просто не всегда верны, если речь идет о свойстве. (Рихтер, глава 9, стр. 204 по книге)
public sealed class Employee
{
private String m_Name; // Это состояние
private Int32 m_Age; // Это состояние
public String GetName() // Это поведение
{
return(m_Name);
}
public void SetName(String value) // Это поведение
{
m_Name = value;
}
public sealed class Employee
{
private String m_Name; // Это состояние
private Int32 m_Age; // Это состояние
public String Name // Это поведение
{
get { return(m_Name); }
set { m_Name = value; }
}
}
public abstract String GetName();
public abstract void SetName(String value);