Обычно к элементу списка в SharePoint мы обращаемся так:
SPListItem item = mylist.GetItemById(id); item["FirstName"] = "John"; item["LastName"] = "Smith"; item["FullName"] = (string)item["FirstName"] +" "+(string)item["LastName"]; item["Amount"] = (int)item["Amount"] + 100;С применением ExpandoObject код становится более читаемым.
SPListItem item = mylist.GetItemById(id); dynamic person = item.Expand(); //см. код расширения ниже person.FirstName = "John"; person.LastName = "Smith"; person.FullName = person.LastName +" "+person.FirstName; person.Amount += 100; item.Inject((object)person); //также см. код расширенияИсходный код расширения:
public static class SPListMapperExtension { public static dynamic Expand(this SPListItem listItem) { dynamic ex = new ExpandoObject(); var dynFields = listItem.Fields.OfType().Where(x => !x.Hidden && x.CanBeDisplayedInEditForm); foreach (var f in dynFields) { (ex as IDictionary ).Add(f.InternalName, listItem[f.InternalName]); } return ex; } public static void Inject(this SPListItem listItem, dynamic obj) { //dynamic o = (dynamic)obj; ExpandoObject ex = obj; var dynFields = listItem.Fields.OfType ().Where(x => !x.Hidden && x.CanBeDisplayedInEditForm); foreach (var f in dynFields) { listItem[f.InternalName] = (ex as IDictionary )[f.InternalName]; } } }
0 коммент.:
Отправить комментарий