На самом деле это зависит от контекста, в котором вы работаете ...
Если список может содержать сразу несколько типов, вы можете использовать
List<object>
как что угодно в C# наследуется от класса объекта. Но будьте осторожны, так как вы не будете знать, что это за тип, и вам придется выполнить проверки для этого.
Если список всегда содержит один и тот же тип данных, вы можете использовать обобщенные типы:
public class EmailObjects<TtoReplace, ThtmlBody>
{
[...]
public List<TtoReplace> lstOfValueToReplace { get; set; }**
public string HTMLbody { get; set; }
public List<ThtmlBody> lsthtmlBody { get; set; }**
}
, но это будет означать, что вызывающий этот класс будет знать, какие типы будут содержаться в вашем списке.