How to implement instantiation of TcpClient, IPEndPoint , IPAddress objects instantiating for both cases IPv4 and IPv6 address when passed As Strings

The TcpClient(string, int) constructor ultimately winds up calling IPAddress.TryParse(string) on the string value you pass in, and it will attempt to apply the result to both an IPv4 and IPv6 socket.

So, you should not have to do anything special. Just pass the IP address to the TcpClient(string, int) constructor and let the TcpClient class deal with it (well, actually the Dns class ultimately is what does the address resolution). There should be no need to do any explicit work to handle IPv6 addresses. Parsing the address yourself is just a waste of code and time.