Тут нужно оставить один вариант из двух: либо у вас все-таки есть общий интерфейс, через который вы будете работать с объектом любого класса, и тогда вам нужно решать задачу создания экземпляра, для чего можно применить либо упомянутую Фабрику, либо рефлексию. Если же вы твердо уверены, что интерфейс вам неизвестен, значит вы решаете мета-задачу - вам нужно сделать что-то с заранее неизвестными полями/методами заранее неизвестных классов (как например, при сериализации объектов в общем случае), тогда вам не обойтись без рефлексии/кодогенерации. Вы только четко для себя выясните, что вам известно о ваших объектах, а что нет.
С советом
Oxoron пожалуй не соглашусь, т.к. если интерфейс пустой, значит он служит исключительно для целей добавления доп. информации о классе (ну т.е. вот у нас есть классы, реализующие его, а вот тут - не реализующие), а эта задача решается гораздо логичнее с использованием атрибутов - они для этого и были созданы.