gpt4 book ai didi

c# - 如何改进 C# 中方法重载的枚举标识结构

转载 作者:太空宇宙 更新时间:2023-11-03 13:02:31 24 4
gpt4 key购买 nike

我有一个结构,用作动画和声音的容器。

    public struct BambooSounds{
public Bamboo type;
public AudioClip sound;
public string animation;
}

在这种情况下,Bamboo 是一个枚举,我可以通过它识别 BambooSounds 数组中的一个条目。

这些是获取相应动画和声音的方法头

public string BambooAnimation(Bamboo animation)
public AudioClip BambooSound(Bamboo sound)

问题是我需要为每个新枚举重新实现这些方法,因为我无法重写这些方法,但我使用它们的模式不会改变(结构、该结构的数组、返回数组结构内容的方法) .

我怎样才能改进这一点,使我具有类型安全性和易用性,并且只需要实现一次逻辑。尝试使用泛型方法,但我卡在了这一点上,泛型参数需要转换为具体类型,以便我可以将它的值与结构条目进行比较。

P.S.:我绝对想保留结构或类,因为在 Unity 中,它们显示在检查器中并且无需编码即可配置。

最佳答案

如果我对你的问题的理解正确,你想构建一个可以获取所有枚举类型的函数。例如,我们有两个枚举:

public enum Enum1
{
Test
}
public enum Enum2
{
Test2
}

这是通用函数:

static void TestEnum<T>(T enumType) where T : struct
{
if (enumType is Enum1)
{
Console.WriteLine("Enum1");
}
if (enumType is Enum2)
{
Console.WriteLine("Enum2");
}
}

这里是如何调用它的:

TestEnum<Enum1>(Enum1.Test);
TestEnum<Enum2>(Enum2.Test2);

关于c# - 如何改进 C# 中方法重载的枚举标识结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31937559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com