Описание виртуальной функции вне тела класса - C#
Формулировка задачи:
Добра.
Такой вопрос:
Пускай у меня есть абстрактный класс Animal. У него есть виртуальная функция Voice.
Могу ли я для класса Dog как-то описать эту функцию, но в ходе выполнения программы, в зависимости от введённых данных.
(Пример очень условный)
Спасибо.
Решение задачи: «Описание виртуальной функции вне тела класса»
textual
Листинг программы
namespace ConsoleApplication1
{
abstract class Algorithm
{
abstract public string Encrypt(string text);
abstract public string Decrypt(string text);
}
class AES : Algorithm
{
public override string Encrypt(string text)
{
return "IN AES ENCRYPT";
}
public override string Decrypt(string text)
{
return "IN AES DECRYPT";
}
}
class VIG : Algorithm
{
public override string Encrypt(string text)
{
return "IN VIG ENCRYPT";
}
public override string Decrypt(string text)
{
return "IN VIG DECRYPT";
}
}
class UserAlg : Algorithm
{
public delegate string AlgorithmDelegate(string text);
private AlgorithmDelegate encrypt;
private AlgorithmDelegate decrypt;
public UserAlg(AlgorithmDelegate encrypt, AlgorithmDelegate decrypt)
{
this.encrypt = encrypt;
this.decrypt = decrypt;
}
public override string Encrypt(string text)
{
return encrypt(text);
}
public override string Decrypt(string text)
{
return decrypt(text);
}
}
class Program
{
static void Main(string[] args)
{
AES aes = new AES();
VIG vig = new VIG();
UserAlg ua = new UserAlg(aes.Encrypt, vig.Decrypt);
Console.WriteLine(ua.Encrypt(""));
Console.WriteLine(ua.Decrypt(""));
UserAlg ua2 = new UserAlg((s) => { return "MY ENCRYPT"; }, (s) => { return "MY DECRYPT"; });
Console.WriteLine(ua2.Encrypt(""));
Console.WriteLine(ua2.Decrypt(""));
Console.ReadKey();
}
}
}