枚举类型作为构造函数中的参数

我使文件对话框成为需要能够将文件类型掩码作为构造函数的一部分传递.如果可能的话,我想将这些掩码存储为Enums.下面是一个示例:

public enum ImageFileMask {
    Bmp,
    Dds,
    Dib,
    Hdr,
    Jpg,
    Pfm,
    Png,
    Ppm,
    Tga
}

然后,使用以下代码行检查我是否选择了文件(如果它属于文件掩码):

if (Enum.IsDefined(ImageFileMask.GetType(), extension))

(扩展名是所选文件的文件扩展名).

这一切都很好,直到我决定我的文件对话框将需要在不同时间接受不同的文件类型.我希望我可以通过构造函数传递任何枚举类型,以便在文件对话框期间存储评估值.

问题是,我找不到在构造函数中将枚举类型作为参数接受的方法.

new FileDialogMenu(ImageFileMask);

我总是收到以下错误:

ImageFileMask is a 'type' but is used like a 'variable'

我曾尝试将构造函数更改为Type,但这没有用.我正在尝试的可能吗?还是我需要采取其他方法来存储面膜.

解决方法:

如果我理解您的问题,您想将枚举的类型传递给您的类的构造函数,如下所示:

class FileDialogMenu
{
    readonly Type enumType;

    public FileDialogMenu(Type enumType)
    {
        this.enumType = enumType;
    }
}

如果是这样,您在执行此操作时没有问题:

new FileDialogMenu(typeof(ImageFileMask));

并且您可以做(在FileDialogMenu类内部):

if (Enum.IsDefined(enumType, extension))

嗯,至少这是我所了解的.

上一篇:c#-Web服务传递参数类


下一篇:参数不适用于python postgres