"Print a file" is rather vague.
If you can find a .NET library (or write your own) to open the specific type of file, read the content, then render the content, you can use the in-built .NET classes such as the FixedDocument class (referenced in Auto print without dialog ) to build up your print output and send it to a printer.
If you want to print an arbitrary file on the filesystem, and are assuming that there is a program installed that can open and print that type of file, and that the program installed a "Print" verb into the right-click menu, then you should be able to use the "ProcessStartInfo" method from Mark's answer above. That simulates the user right-clicking on the file and selecting an option named "Print".
Either way, printing on Windows with no user input is a separate problem in itself. The print dialogue that appears is often part of the driver for that specific printer (rather than the generic Windows printer dialogue) and includes options that are specific to that printer, such as duplexing, or selecting a specific paper tray, etc. Many of these drivers provide no programmatic method of setting these options at all, and those that do often need code that is specific to that driver. You can programmatically specify the generic options (such as number of copies), but any extra features will either be disabled or will use default values.
Hope this helps