И если так, то почему вы не можете сделать это:
public interface IParsable
{
static IParsable Parse(string s);
static bool TryParse(string s, out IParsable);
}
в C #?
РЕДАКТИРОВАТЬ: Или, альтернативно:
public interface IParseable<T>
{
static T Parse(string s);
static bool TryParse(string s, out T);
}
РЕДАКТИРОВАТЬ # 2:
Я научился глупости своих способов, пытаясь использовать IParsable, как предлагают многие ниже. Пример, который я сделал, следующий. Конечно, нет способа разрешить вызов TryParse ...
public IParsable ReadFromKeyboard()
{
IParsable ToReturn;
bool FirstTry = false;
bool Success;
do
{
if (!FirstTry)
DisplayError();
AskForInput();
Success = IParsable.TryParse(Console.ReadLine, out ToReturn);
FirstTry = false;
} while(!Success)
return ToReturn;
}