Что вы хотите сделать здесь, так это использовать полиморфизм . На самом деле, вы любезно реализуете шаблон проектирования стратегии здесь, где у вас есть базовый класс (или интерфейс)
public abstract class FileTypeMaster
{
public abstract CompileThis();
}
И имеют разные реализации, для Word и Pdf:
public class PdfType : FileTypeMaster
{
public override CompileThis () {}
}
Затем в вызывающей программе вы можете создать правильную реализацию:
FileTypeMaster x = new PdfType();
x.CompileThis()
или
FileTypeMaster x = new WordType() x.CompileThis()
Фактически, вы можете абстрагировать инициализацию, используя фабричный класс или фабричный метод:
public abstract class FileTypeMaster
{
public abstract CompileThis();
public static FileTypeMaster Create( FileType type )
{
switch( type )
{
case FileType.Word : return new WordType();
case FileType.Pdf : return new PdfType();
default:
throw new NotImplementedException();
}
}
}