Пока я не пытался это сделать, я предположил, что знаю, как это работает; однако следующий код генерирует исключение. Поскольку TestOC
является потомком ObservableCollection
, я думал, что я мог бы сделать это:Использование дисперсии для преобразования родительского класса (ObservableCollection) в ребенка
class MyClass
{
public string MyProperty { get; set; }
}
class TestOC : ObservableCollection<MyClass>
{
}
class Program
{
static void Main(string[] args)
{
ObservableCollection<MyClass> test = new ObservableCollection<MyClass>();
test.Add(new MyClass());
TestOC test2 = (TestOC)test;
}
}
Ошибка выброшен является:
Невозможно привести объект типа «System.Collections.ObjectModel.ObservableCollection`1 [ ConsoleApplication17.MyClass] 'для ввода' ConsoleApplication17.TestOC '.
Как я могу получить ObservableCollection
, чтобы назначить мой класс для детей здесь?
Почему вы хотите включить родительский класс в его подкласс? –
Довольно много дубликатов: http://stackoverflow.com/questions/16534253/c-sharp-converting-base-class-to-child-class –
Вы не можете использовать произвольное 'Animal' для' Dog' , Вы можете создать _new_ 'Dog' с теми же свойствами, что и« Animal », но вы не можете их отличить. –