У меня есть несколько классов, которые все реализуют определенный интерфейс. Я хочу сохранить уникальную строку в каждом классе, которую я могу получить, не создавая объект для этого класса. Я уже просмотрел много постов здесь и не смог найти ответ.
Если я создаю объект для каждого класса, то я просто хочу:
class X:IBase{ string m = "x";}
class Y:IBase{string m = "x";}
class Z:IBase{string m = "x";}
class interface IBase{ string m;}
static int Main(){
IBase[] arr = {new X(), new Y(), new Z()};
foreach(IBase b in arr){
Console.WriteLine(b.m);
}
}
Но я хочу сделать это без создания объекта. Поэтому я хочу сделать это:
class X:IBase{ static string m = "x";}
class Y:IBase{ static string m = "x";}
class Z:IBase{ static string m = "x";}
class interface IBase{ //no static fields allowed}
static int Main(){
Type[] arr = {X, Y, Z};
foreach(Type t in arr){
Console.WriteLine(t.m); //error, cannot resolve symbol m
}
}
Я что-то упускаю из виду или это просто невозможно?
Причина, по которой я не хочу создавать объект, заключается в том, что я хочу отображать эту строку в начале, когда мне не нужны никакие объекты. Я создаю объект только тогда, когда мне нужно сэкономить место.