В моем консольном приложении у меня есть интерфейс с именем IFileConverter , указанный ниже:
public interface IFileConverter
{
string InputFileFormat { get; }
string OutputFileFormat { get; }
object Convert(object input);
}
И некоторые из шаблонов классов, которые реализуют этот интерфейс: Png2JpgConverter код класса:
/// <summary>
/// Image of class of converter Png file to Jpg file.
/// </summary>
public class Png2JpgConverter : IFileConverter
{
public string InputFileFormat => "png";
public string OutputFileFormat => "jpg";
public object Convert(object input) => "this is a jpg file."; // TODO ...
}
и другой класс, например: Jpg2BmpConverter код класса:
/// <summary>
/// Image of class of converter Jpg file to Bmp file.
/// </summary>
public class Jpg2BmpConverter : IFileConverter
{
public string InputFileFormat => "jpg";
public string OutputFileFormat => "bmp";
public object Convert(object input) => "this is a bmp file."; // TODO ..
}
И у меня есть InputFileFormat , который это: string inputFileFormat = "png";
OutputFileFormat , что: string outputFileFormat = "jpg";
И объект object input = "this is a png file.";
Мой вопрос таков; я хочу вызвать Convert () метод соответствующего класса для мнимого процесса преобразования. Но мне нужно сделать это в действительной операции. Есть ли способ сделать это, как указано ниже?
static void Main(string[] args)
{
string inputFileFormat = "png";
string outputFileFormat = "jpg";
object input = "this is a png file."; // for example
//here i want to call method of Convert() like this:
if(var selectedConverter is IFileConverter converter)
{
object output = selectedConverter.Convert(input);
}
// but i don't know how to do it and how to match inputFileFormat and outputFileFormat
// in appropriate class that impelents IFileConverter interface...
}
Любая помощь будет хорошей ..