Good! I have 3 classes, one is TokenBase
, which is used as the parent of the other classes:
abstract class TokenBase
{
public TokenTypes Type { get; set; }
public virtual object Value { get; set; }
public override string ToString()
{
return $"Type: {Type}\t\t Value: {Value}";
}
}
Derived classes:
class StringToken : TokenBase
{
private string _Value;
public new string Value
{
get { return _Value; }
set { _Value = value;}
}
public StringToken(string v) { Type = TokenTypes.String; Value = v; }
}
class SymbolToken : TokenBase
{
private string _Value;
public new Symbols Value
{
get { return _Value; }
set { _Value = value;}
}
public SymbolToken(Symbols v) { Type = TokenTypes.Symbol; Value = v; }
}
The problem is when I want to call ToString()
or Value
in one of the derived classes within the list:
public static void Main(string[] args)
{
IList<TokenBase> Tokens = new List<TokenBase>();
Tokens.Add(new StringToken("Hola Mundo"));
foreach (TokenBase T in Tokens)
{
Console.WriteLine(T.ToString());
// Obtengo la siguiente salida: "Type: String Value: "
Console.WriteLine(T.Value.ToString()); // Obtengo: ""
}
Console.ReadLine();
}
// Salida esperada: "Type: String Value: Hola Mundo"
How can I directly access the Value
property of one of the derived types?