I would encapsulate printer "settings" (or, more accurately, "connection settings") into another class and have that in the interface
. Somewhat like this:
public class PrinterSettings {
public string Password { get; set; }
public int Port { get; set; }
/* .. others .. */
}
public interface IPrinterProvider {
void Initialize(PrinterSettings settings);
bool Connect(string comPort);
bool IsConnected();
}
Then each implementation can deal with the settings in whatever way they see fit.