Мне пришлось добавить следующие строки в gradle, чтобы устранить ошибку, это зависит от версии, которую вы используете, такой же, как appcompat
compile 'com.android.support:appcompat-v7:26+'
compile 'com.android.support:mediarouter-v7:26+'
Я использую asp.net mvc как мой html-сайт (механизм просмотра по умолчанию), так и конечная точка службы. Конечная точка службы используется моими клиентами WPF и Silverlight путем вставки «content-type = text / xml» в заголовок запроса WebClient (см. Сообщение ScottGu о потреблении службы в SL, которая вдохновила этот подход) . Я нашел где-то в сети код, который переопределяет событие OnActionExecuted, например:
public class JsonOrXml : ActionFilterAttribute
{
private static UTF8Encoding UTF8 = new UTF8Encoding(false);
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
// setup the request, view and data
HttpRequestBase request = filterContext.RequestContext.HttpContext.Request;
ViewResult view = (ViewResult)(filterContext.Result);
var data = view.ViewData.Model;
String contentType = request.ContentType ?? string.Empty;
// JSON
if (contentType.Contains("application/json") || (string)view.ViewData["FORMAT"] == "json")
{
filterContext.Result = new JsonResult
{
Data = data
};
}
// POX
else if (contentType.Contains("text/xml") || (string)view.ViewData["FORMAT"] == "xml")
{
// MemoryStream to encapsulate as UTF-8 (default UTF-16)
// http://stackoverflow.com/questions/427725/
//
// MemoryStream also used for atomicity but not here
// http://stackoverflow.com/questions/486843/
//using (MemoryStream stream = new MemoryStream(500))
//{
// using (var xmlWriter =
// XmlTextWriter.Create(stream,
// new XmlWriterSettings()
// {
// OmitXmlDeclaration = false,
// Encoding = UTF8,
// Indent = true
// }))
// {
// new XmlSerializer(data.GetType()).Serialize(xmlWriter, data);
// }
// filterContext.Result = new ContentResult
// {
// ContentType = "text/xml",
// Content = UTF8.GetString(stream.ToArray()),
// ContentEncoding = UTF8
// };
//}
XmlDeclaration xmlDecl = new XmlDocument().CreateXmlDeclaration("1.0", "UTF-8", "yes");
filterContext.Result = new ContentResult
{
ContentType = "text/xml",
Content = xmlDecl.OuterXml + data.ToString(),
ContentEncoding = UTF8
};
}
}
}
Итак, закомментированный фрагмент - это код, который я нашел - см. Ссылки на stackoverflow, чтобы узнать, где я его получил :)
Я переопределил ToString () для всех моих бизнес-объектов, чтобы вернуть строку, представляющую, как бизнес-объект хотел бы представлять себя как xml.
var l1 = new List<int>() { 1,2,3,4,5,2,2,2,4,4,4,1 };
var g = l1.GroupBy( i => i );
foreach( var grp in g )
{
Console.WriteLine( "{0} {1}", grp.Key, grp.Count() );
}
Редактировать за комментарий: Я постараюсь сделать это справедливо. :)
В моем примере это Func
, потому что мой список - это целые числа. Итак, я говорю GroupBy, как сгруппировать свои элементы. Func принимает int и возвращает ключ для моей группировки. В этом случае я получу IGrouping
(группировка целых чисел с ключом int). Если бы я изменил его на ( i => i.ToString ()
), например, я бы добавил свою группировку строкой. Вы можете представить менее тривиальный пример, чем ввод с помощью «1», «2», «3» ... может быть, я создаю функцию, которая возвращает «один», «два», «три» в качестве моих ключей ...
private string SampleMethod( int i )
{
// magically return "One" if i == 1, "Two" if i == 2, etc.
}
Итак, это Func, который принимает int и возвращает строку, точно так же, как ...
i => // magically return "One" if i == 1, "Two" if i == 2, etc.
Но,
Вы можете сделать что-то вроде этого для подсчета из списка вещей.
IList<String> names = new List<string>() { "ToString", "Format" };
IEnumerable<String> methodNames = typeof(String).GetMethods().Select(x => x.Name);
int count = methodNames.Where(x => names.Contains(x)).Count();
Для подсчета одного элемента
string occur = "Test1";
IList<String> words = new List<string>() {"Test1","Test2","Test3","Test1"};
int count = words.Where(x => x.Equals(occur)).Count();
Ваш внешний цикл перебирает все слова в списке. В этом нет необходимости и возникнут проблемы. Снимите его, и он должен работать правильно.
Я использую asp.net mvc как свой html-сайт (механизм просмотра по умолчанию), так и конечную точку службы. Конечная точка службы используется моими клиентами WPF и Silverlight путем вставки «content-type = text / xml» в заголовок запроса WebClient (см. Сообщение ScottGu о потреблении службы в SL, которая вдохновила этот подход) . Я нашел где-то в сети код, который переопределяет событие OnActionExecuted, например:
public class JsonOrXml : ActionFilterAttribute
{
private static UTF8Encoding UTF8 = new UTF8Encoding(false);
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
// setup the request, view and data
HttpRequestBase request = filterContext.RequestContext.HttpContext.Request;
ViewResult view = (ViewResult)(filterContext.Result);
var data = view.ViewData.Model;
String contentType = request.ContentType ?? string.Empty;
// JSON
if (contentType.Contains("application/json") || (string)view.ViewData["FORMAT"] == "json")
{
filterContext.Result = new JsonResult
{
Data = data
};
}
// POX
else if (contentType.Contains("text/xml") || (string)view.ViewData["FORMAT"] == "xml")
{
// MemoryStream to encapsulate as UTF-8 (default UTF-16)
// http://stackoverflow.com/questions/427725/
//
// MemoryStream also used for atomicity but not here
// http://stackoverflow.com/questions/486843/
//using (MemoryStream stream = new MemoryStream(500))
//{
// using (var xmlWriter =
// XmlTextWriter.Create(stream,
// new XmlWriterSettings()
// {
// OmitXmlDeclaration = false,
// Encoding = UTF8,
// Indent = true
// }))
// {
// new XmlSerializer(data.GetType()).Serialize(xmlWriter, data);
// }
// filterContext.Result = new ContentResult
// {
// ContentType = "text/xml",
// Content = UTF8.GetString(stream.ToArray()),
// ContentEncoding = UTF8
// };
//}
XmlDeclaration xmlDecl = new XmlDocument().CreateXmlDeclaration("1.0", "UTF-8", "yes");
filterContext.Result = new ContentResult
{
ContentType = "text/xml",
Content = xmlDecl.OuterXml + data.ToString(),
ContentEncoding = UTF8
};
}
}
}
Итак, закомментированный фрагмент - это код, который я нашел - см. Ссылки на stackoverflow, где я его получил: )
Я переопределил метод ToString () для всех моих бизнес-объектов, чтобы вернуть строку, представляющую, как бизнес-объект хотел бы представлять себя как xml. WCF выполняет это с помощью атрибутов, но мне нужно было более чистое решение, которое не полагалось бы на отражение, И я не хотел иметь и проект веб-сайта, и проект WCF - проблема с двумя проектами в том, что было трудно сохранить их оба. синхронно в отношении функциональности - я бы получал запросы вроде «почему служба не позволяет мне фильтровать мои результаты, как это делает веб-сайт?»
Меня очень интересуют отзывы других об этом подходе :)
Вот пример бизнес-объекта: