- Посмотрел документы.
- Нужно написать эту систему. Наша часть - только юай + контроллеры. База - на каше в Америке. Сервисы нам будут предоставлены.
- Как на счёт использования .NET 3.5?
- А зачем он вам? Entity framework все равно использоваться не будет.
Именно с этого диалога я начну рассказ о том, какую пользу принесет использование .NET 3.5 в проектах без использования Entity Framework.- Нужно написать эту систему. Наша часть - только юай + контроллеры. База - на каше в Америке. Сервисы нам будут предоставлены.
- Как на счёт использования .NET 3.5?
- А зачем он вам? Entity framework все равно использоваться не будет.
Пример номер раз (методы-расширения):
Как часто приходится писать подобный код:string value = Request.Params["VacancyID"];
int id;
int.TryParse(value, out id);
ViewCandidate(id);
value.ToInt()
public static int ToInt(this string value)
{
int id;
int.TryParse(value, out id);
return id;
}
string value = Request.Params["VacancyID"];
ViewCandidate(value.ToInt());
Примеры удобных расширений:
public static bool IsEmpty<T>(this IEnumerable<T> list)
{
return list == null || list.Count() == 0;
}
public static void Fire<TEventArgs>(this EventHandler<TEventArgs> eventHandler, object sender, TEventArgs e) where TEventArgs : System.EventArgs
{
if (eventHandler != null)
eventHandler(sender, e);
}
Пример номер два (неявно типизированные переменные):
Подобный код встречается реже, но тоже бывает:IDictionary<CandidateFilter, IList<CandidateState>> cf = new Dictionary<CandidateFilter, IList<CandidateState>>()
var cf = new Dictionary<CandidateFilter, IList<CandidateState>>()
var i;
var k = null;
Пример номер три (анонимные типы):
Иногда появляется необходимость создать временный класс, сущность которого сводится только к набору полей. С появлением неявного типизирования, появилась возможность добавить анонимные типы - типы, для которых классы создаются в процессе выполнения программы. Теперь можно написать вот так:var c = new { User = currentUser, DateTime = DateTime.Now };
Console.WriteLine(c.DateTime);
Console.WriteLine(c.User.Name);
Пример номер четыре (авто свойства):
В классах доменой модели часто можно встретить подобный код:class User
{
private string _firstName;
private string _lastName;
public string FirstName
{
get { return _firstName; }
set { _firstName = value; }
}
public string LastName
{
get { return _lastName; }
set { _lastName = value; }
}
}
class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Пример номер шесть (лямбда выражения):
В библиотеке System.Core объявлены следующие универсальные делегаты:public delegate TResult Func<T1 arg1, T2 arg2, T3 arg3, T4 arg4>; public delegate TResult Func<T1 arg1, T2 arg2, T3 arg3>; public delegate TResult Func<T1 arg1, T2 arg2>; public delegate TResult Func<T1 arg1>;
Пусть в приложении необходимо использование следующего выражения:
Func<CandidateState, int> func = delegate(CandidateState state)
{
return (int)state;
};
Func<CandidateState, int> func = state => (int) state;
При необходимости можно использовать и несколько параметров:
Func<int,int,int> f = (x, y) => x + y;
DirectoryInfo appThemes = new DirectoryInfo(Page.MapPath("~/App_Themes"));
if(appThemes.GetDirectories().Where(d => d.Name == theme).Count() > 0)
...
Комментариев нет:
Отправить комментарий