Интерфейс не ограничивающий параметры метода
Можно ли в С# реализовать такой интерфейс, чтобы он не ограничивал типы аргументов и вообще их наличие в методе? (Кроме как через params object[] list)
Что-то вроде...
interface initiated
{
void init();
}
class A : initiated
{
public void init(string name)
{
throw new NotImplementedException();
}
}
class B : initiated
{
public void init(double val1, int val2)
{
throw new NotImplementedException();
}
}
Изначальная идея состоит в том, чтобы к аргументу шаблонного (универсального) класса выставить требование на реализацию некоторой функции. Например:
interface initiated
{
void init();
}
abstract class Singlton<T> where T: class, initiated, new()
{
private static T instance = null;
public static T getinstance()
{
if (instance == null) instance = new T();
return instance;
}
}
public A : Singlton<A>, initiated
{
public void init(string name)
{
throw new NotImplementedException();
}
}
public B : Singlton<B>, initiated
{
public void init(double value)
{
throw new NotImplementedException();
}
}
Понятно, что тот, кто наследуется от Singleton<T>, должен сам понимать, что ему нужно инициализировать класс в обход конструктора, и оставить это на его совести. Однако, интересно, есть ли вообще в языке такая возможность?