var name = Console.ReadLine();
var category = new Category { Name = name };
db.Categories.Add(category);
Вам нужно написать код, как указано выше, я надеюсь, что это решит вашу проблему.
С небольшим количеством отражения можно превратить анонимный тип в Словарь <строка, объект>; Roy Osherove заносит свою технику в блог для этого здесь: http://weblogs.asp.net/rosherove/archive/2008/03/11/turn-anonymous-types-into-idictionary-of-values.aspx
Jacob Carpenter использует анонимные типы в качестве способа инициализировать неизменные объекты с синтаксисом, подобным для возражения инициализации: http://jacobcarpenter.wordpress.com/2007/11/19/named-parameters-part-2/
Анонимные типы могут использоваться в качестве способа дать более легкие к чтению псевдонимы свойствам объектов в наборе, выполняемом с помощью итераций с a foreach
оператор. (Хотя, честно говоря, это - действительно не что иное как стандартное использование анонимных типов с LINQ к Объектам.), Например:
Dictionary<int, string> employees = new Dictionary<int, string>
{
{ 1, "Bob" },
{ 2, "Alice" },
{ 3, "Fred" },
};
// standard iteration
foreach (var pair in employees)
Console.WriteLine("ID: {0}, Name: {1}", pair.Key, pair.Value);
// alias Key/Value as ID/Name
foreach (var emp in employees.Select(p => new { ID = p.Key, Name = p.Value }))
Console.WriteLine("ID: {0}, Name: {1}", emp.ID, emp.Name);
В то время как нет большого улучшения этого краткого образца, если foreach
цикл был длиннее, относясь к ID
и Name
мог бы улучшить удобочитаемость.
Иногда я подозреваю, что может быть полезно выполнить что-то, что похоже на запрос LINQ, но, оказывается, не использует LINQ - но Вы все еще хотите проекцию некоторого вида. Я не думаю, что использовал бы анонимные типы в их текущей форме для чего-либо радикально различного от проекций LINQ.
Одной вещью, которую я хотел бы видеть, является способность создать "названный" типами с простыми объявлениями, которые генерировали бы свойства и конструктора таким же образом что касается анонимных типов, а также переопределяющий Equals/GetHashCode/ToString тем же (полезным) способом. Те типы могли затем быть преобразованы в "нормальные" типы, когда потребность добавить больше поведения возникла.
Снова, я не думаю, что использовал бы его ужасно часто - но время от времени способность будет удобна, особенно в рамках нескольких методов класса. Это могло, возможно, быть частью большего усилия оказать больше поддержки неизменным типам в C# 5.
ASP.NET MVC направляющее использование эти объекты повсеместно.
Добавить к тому, какая сказанная Справедливость, ASP.NET MVC является первым местом, я видел их используемые интересными и полезными способами. Вот один пример:
Html.ActionLink("A Link", "Resolve", new { onclick = "someJavascriptFn();" })
ASP.NET MVC использует анонимные типы как это для добавления произвольных атрибутов к элементам HTML. Я предполагаю, что существует много различных способов, которыми Вы могли выполнить то же самое, но мне нравится краткий стиль анонимных типов, это дает вещам больше динамического чувства языка.
Самое большое использование для анонимных типов является LINQ, на самом деле вот почему это было создано.
Я предполагаю, что одна причина анонимного типа за пределами linq состоит в том, чтобы создать временный подобный структуре объект, например:
var x = new { a = 1, b = 2 };
Это может сделать Вашу жизнь немного легче в некоторых ситуациях.
Я использовал их для того, чтобы сделать шаблонные электронные письма, поскольку они являются великими, если Вы используете отражение и дженерики.
Некоторая информация может быть найдена здесь: http://www.aaron-powell.com/blog.aspx?id=1247