разных типов данных в зависимости от необходимости?
1. Возвращать object, а потом делать приведение типов 2. Возвращаемые объекты могу реализовывать один интерфейс либо через наследование, возвращать базовый класс, а потом опять приведение типов
смотря какая необходимость. Если необходимость известна на стадии компиляции, то ответ Максима про дженерики (<T>), если не известно, то подходов куча и множество, начиная от "общего" класса типа public class MyClass { public Type1 adin; public Type2 dva; ... public TypeN n; } заканчивая object и dynamic. А можно даже и компиляцию налету заюзать (ExpressionTree или CSharpCompiler)
Обсуждают сегодня