从当前方法C#向下调用方法2类

时间:2018-11-08 22:10:01

标签: c# class encryption

所以我有一个包含对象列表的主类。

List<Media> media = new List<Media>();

媒体类是抽象类。有一个叫做Book的类,它是从媒体继承的。以下是将书籍添加到媒体列表的示例。

media.Add(new Book(mediaInfo[1], Convert.ToInt32(mediaInfo[2]), mediaInfo[3], summary));

mediaInfo是将值传递给构造函数的数组。

string[] mediaInfo = record.Split('|');

将摘要传递到媒体后,它将被加密。 book类包含一个Decrypt()方法,该方法将对其解密并且可以正常工作。问题是当我尝试调用它时,我收到一条错误消息,指出“解密不在媒体中”。所以我怎么称呼它。 我试过了,但出现错误。

foreach (Media m in media)
{
   if (m.Search(query))
   {

      if (m.GetType() == typeof(Book))
      {
          Console.WriteLine(m.ToString() + m.Decrypt());
      }
   }
}

我检查它是否是一本书,为什么它不能下到书以查看是否存在解密。我不能将解密放入Media类,因为还有一个未插入的歌曲类。

2 个答案:

答案 0 :(得分:4)

我会使用pattern matching

foreach (Media m in media)
{
   if (m.Search(query))
   {

      if (m is Book b)
      {
          Console.WriteLine(b.ToString() + b.Decrypt());
      }
   }
}

答案 1 :(得分:2)

由于m的类型为Media(不包含Decrypt()),因此您需要将m强制转换为Book

Console.WriteLine(m.ToString() + ((Book)m).Decrypt());