Dependency injection in constructor vs Supplying argument in utility functions
If you use second option you should probably declare  methods as static. Since you dont have any "data" associated with NameService object instance(service).

Like this:

public static string GetFullName(Person person)
{
    var fullName = $"{person.FirstName} {person.MiddleName} {person.LastName}";
    return fullName;
}


And then you can call... 

NameService.GetFullName(person);


... without object initialazing - without line var service=new NameService();