I have a MVVM app with DataServices (using mvvmlight).
Right now, i'm using it like
var answer = await myDataService.PullList(categoryId);
if (answer.Status == Ok)
ObservableListOfItems.ReplaceWith(answer.Collection); // Show results
if (answer.Status == ConnectionLost)
// Handle connection lost state, show msg window or something
if (answer.Status == ParsingError)
// Handle parsing problem
where
async Task<MyAnswer> PullList(int id)
{
// Just a wrapper around HttpWebRequest, returns String.Empty if something happened
var resultString = await NetworkManager.GetAsync(UrlGenerator.GenerateCategoryRequest(id));
if (String.IsNullOrEmpty(resultString))
return new MyAnswer {Status = ConnectionLost);
try
{
var parsedResult = JsonConvert.DeserializeObject<PocoProducts>();
return new MyAnswer {Status = Ok, Collection = parsedResult.List);
}
catch (Exception)
{
return new MyAnswer {Status = ParsingError; }
}
and
public class MyAnswer()
{
public List<Items> {get; set;}
public EnumStatuses Statuc {get; set;}
}
public enum EnumStatuses
{
Ok = 0,
ConnectionLost,
ParsingError
}
So I'm curious, did i just re-invented an exceptions, didn't i?
PS: wrote a code just here, typos are possible, but general idea should be clear