我就跳右覆盖一个属性的访问器
假设的AudioFile是一个抽象类,像这样:
abstract class AudioFile
{
public string Title { get; set; }
}
现在,在大多数情况下,使用a.Title非常适合其他从AudioFile继承的类。然而,在MPEG文件的情况下,这是存储在不同的对象在ID3变量:
class MPEG : AudioFile
{
private ID3 id3;
public new string Title {
get {
return id3.Title;
}
set {
id3.Title = value;
}
}
}
class WMA : AudioFile
{
}
我想什么是做到以下几点:
AudioFile a;
if(isMPEG) {
a = LoadMPEG(); // Returns a new MPEG instance.
} else
if(isWMA) {
a = LoadWMA(); // Return a new WMA instance.
}
Console.WriteLine(a.Title);
// Other stuff with a.
我所期望的输出无论是MPEG还是WMA,这首歌的标题。但是,当它的MPEG,它不会按预期工作(因为它不使用id3对象)。它的唯一工作方式是:
if(isMPEG) {
MPEG a = LoadMPEG(); // Returns a new MPEG instance.
Console.WriteLine(a.Title);
// Other stuff with a.
} else
if(isWMA) {
WMA a = LoadWMA(); // Return a new WMA instance.
Console.WriteLine(a.Title);
// Other stuff with a.
}
这不是我想要的。关于如何做我想做的事情的想法?
很棒的回答,像一个魅力工作。谢谢!是的,我确实来自Java背景。 :) –