Get collection of objects from CSV string and vise-versa
I would suggest using the new() generic type constraint. Using Activator means you can match a private constructor which you would no longer be the case with the generic constraint but you would be able to catch incorrect use at compile time. Currently, if I tried to use a class like:

 public class Foo
 {
     public Foo(string bar, double baz) { /* ... */ }
 }


Your class would throw at runtime (a MethodMissingException I believe). If you added where T : class, new() instead of just where T : class, trying to use your class with the Foo type would produce a compile time error. An error I can fix before having to run the code is the most helpful kind.



Doing reflection in a loop when you don't need to is not a good thing. You do this for every line in the input file:

 T obj = GetObject();
 Type t = obj.GetType();
 PropertyInfo[] props = t.GetProperties();


You can create this all before processing the file and you don't need to create an instance to get the type information:

PropertyInfo[] props = typeof(T).GetProperties();

for (int i = 1; i &lt; _csvLines.Length; i++)
{
    T obj = GetObject(); // or T obj = new T(); with the constraint added.




You probably want the PropertyInfo[] to be an IDictionary&lt;string, PropertyInfo&gt;. to simplify the lookup by column name.



As for whether this should be a class or not... If you do the reflection in the constructor and keep the instance around to process multiple files then I think it is okay to be a class to save on having to do the reflection over and over again. 

If you are going to create an instance to process a file and then throw it away, or if you don't move the reflection to the constructor, I think it would be better as a static class with 2 methods as the other review suggests.



It's spelt: "separator" not "separetor". You've used both spellings. It's a word that I almost always spell wrong too :)