从派生类中运行时施放特定的枚举

发布于 2025-02-06 22:22:51 字数 583 浏览 0 评论 0原文

我有一组从同一基类得出的类,所有这些都定义了同名的独特枚举。

public class DerivedClassOne : BaseClass
{
    public enum Flags
    {
        None = 0,
        cheese = 1,
        ham = 2,
        egg = 4
    }
}

public class DerivedClassTwo : BaseClass
{
    public enum Flags
    {
        None = 0,
        bacon = 1,
        lettuce = 2,
        tomato = 4
    }
}

我只有一个Baseclass的实例能够将INT(n)投放给该枚举并在运行时存储? IE:

object flag = (BaseClassInstance.Enums.Flags)n;

I have a group of classes that all are derived from the same base class, and all define unique Enums of the same name.

public class DerivedClassOne : BaseClass
{
    public enum Flags
    {
        None = 0,
        cheese = 1,
        ham = 2,
        egg = 4
    }
}

public class DerivedClassTwo : BaseClass
{
    public enum Flags
    {
        None = 0,
        bacon = 1,
        lettuce = 2,
        tomato = 4
    }
}

How would I, with only an instance of BaseClass, be able to cast an int (n) to this enum and store it at runtime? ie:

object flag = (BaseClassInstance.Enums.Flags)n;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟花易冷人易散 2025-02-13 22:22:51

如果您不介意 /a> enums作为enum(比object>),然后您可以执行此操作:


public abstract class BaseClass
{
    public abstract Enum ConvertInt32ToSomeEnumType( Int32 value );
}

public class DerivedClassOne : BaseClass
{
    public override Enum ConvertInt32ToSomeEnumType( Int32 value ) => (DerivedClassOne.Flags)value;
}

public class DerivedClassTwo : BaseClass
{
    public override Enum ConvertInt32ToSomeEnumType( Int32 value ) => (DerivedClassTwo.Flags)value;
}

屏幕截图证明:

If you don't mind boxing enums as Enum (which is somewhat better than Object), then you can do this:


public abstract class BaseClass
{
    public abstract Enum ConvertInt32ToSomeEnumType( Int32 value );
}

public class DerivedClassOne : BaseClass
{
    public override Enum ConvertInt32ToSomeEnumType( Int32 value ) => (DerivedClassOne.Flags)value;
}

public class DerivedClassTwo : BaseClass
{
    public override Enum ConvertInt32ToSomeEnumType( Int32 value ) => (DerivedClassTwo.Flags)value;
}

Screenshot proof:

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文