Это приложение для Windows, 8.1 Магазин с использованием .Net 4.5общие методы с observablecollections
я нашел себя тиражирование и тот же код для каждого «объекта», что у меня есть. Итак, я пытаюсь создать более общий метод, чтобы получить все данные так, как я хочу. Первоначально все было <Typed>
для моих разных объектов, но теперь я пытаюсь использовать общий <Object>
.
public async Task<ObservableCollection<object>>selectAll()
{
var Items = await Win8StorageHelper.LoadData("person.dat", typeof(ObservableCollection<object>));
ObservableCollection<object> ItemsList = new ObservableCollection<object>();
if (typeof(Int32) == Items.GetType())
{
//Not Needed anymore
}
else
{
ItemsList = (ObservableCollection<object>)Items;
}
_list.Clear();
foreach (object item in ItemsList)
{
_list.Add(item);
}
return _list;
}
У меня есть оригинальные коллекции _frequencyList и теперь новая родовая коллекция _list:
private ObservableCollection<win8Chores.Model.databaseTables.Frequency> _frequencyList;
public ObservableCollection<Object> _list = new ObservableCollection<Object>();
Я пытаюсь вызвать мой новый метод, как это:
_frequencyList = await selectAll();
Однако я 'm получение ошибки:
Cannot implicitly convert type 'System.Collections.ObjectModel.ObservableCollection' to 'System.Collections.ObjectModel>observableCollection'
Что мне нужно сделать, чтобы этот код работал? Я даже на правильном пути? Любая помощь приветствуется.
Update: Это оригинальные методы, которые я пытался реорганизовать для общего примера:
public async Task<ObservableCollection<Person>> selectAllPersons()
{
var personItems = await Win8StorageHelper.LoadData("person.dat", typeof(ObservableCollection<Person>));
ObservableCollection<Person> personItemsList = new ObservableCollection<Person>();
if (typeof(Int32) == personItems.GetType())
{
//Not Needed anymore
}
else
{
personItemsList = (ObservableCollection<Person>)personItems;
}
_personList.Clear();
foreach (Person item in personItemsList)
{
_personList.Add(item);
}
return _personList;
}
public async Task<ObservableCollection<Frequency>> selectAllFrequencies()
{
var frequencyItems = await Win8StorageHelper.LoadData("frequency.dat", typeof(ObservableCollection<Frequency>));
ObservableCollection<Frequency> frequencyItemsList = new ObservableCollection<Frequency>();
if (typeof(Int32) == frequencyItems.GetType())
{
//Not Needed anymore
}
else
{
frequencyItemsList = (ObservableCollection<Frequency>)frequencyItems;
}
_frequencyList.Clear();
foreach (Frequency item in frequencyItemsList)
{
_frequencyList.Add(item);
}
return _frequencyList;
}
public async Task<ObservableCollection<Chore>> selectAllChores()
{
var choreItems = await Win8StorageHelper.LoadData("chore.dat", typeof(ObservableCollection<Chore>));
ObservableCollection<Chore> choreItemsList = new ObservableCollection<Chore>();
if (typeof(Int32) == choreItems.GetType())
{
//Not Needed anymore
}
else
{
choreItemsList = (ObservableCollection<Chore>)choreItems;
}
_choreList.Clear();
foreach (Chore item in choreItemsList)
{
_choreList.Add(item);
}
return _choreList;
}
* Почему * Вы используете 'вместо object' ваших конкретных типов сейчас? –
Я переписывал этот же метод для каждого типа. Я решил, что он может быть реорганизован, поэтому мне не нужно повторно писать один и тот же метод снова и снова. Разве это не правильный путь? – webdad3
Звучит как случай для дженериков. Это позволяет сохранять типы и оставаться гибкими. – usr