У меня есть этот код:
object temp;
if (choice == 1)
{
temp = new HardCopy();
Books = p.AddBook(temp, Books);
}
else
{
//EBook temp = new EBook();
//Books = p.AddBook(temp, Books);
}
Этот тип работает, но на другой стороне p.AddBook
есть оператор if
, который фактически является дубликатом, исключая один атрибут. (У HardCover есть Index, тогда как у EBook есть Keyword).
Я хотел бы знать, есть ли способ создать переменную Type, которую C# принимает (как мне кажется, не из моего тестирования), а затем используйте этот тип для приведения объекта на другую сторону метода.
if (book.GetType().Name == "HardCopy") {
HardCopy temp = new HardCopy();
Это то, что я делаю, чтобы выбрать между сегментами if
.
Что-то на то, что я ищу:
Object temp;
if (choice == 1) {
temp = new HardCopy();
(...)
}
Books = p.AddBook(temp, Books);
Без необходимости делать это изнутри if
. Затем с другой стороны, что-то вроде:
Console.Write("Please Enter the Name of the Book: ");
((TypeVariable)temp).Name = Console.ReadLine();