C# 调整检查并转换为数值

C# 调整检查并转换为数值,c#,frameworks,game-engine,C#,Frameworks,Game Engine,我是C#的初学者,遇到了一个相当不寻常的问题。现在,虽然我的代码目前工作正常,但我希望有更好的方法来实现它。有问题的代码在我的列表的ForEach中。这两个示例类继承了示例。我希望有更好的方法来检查并以更可重用的方式(方法)执行以下代码,因为我在代码的其他地方使用了这样的检查和应用程序 public interface Example { // some stuff } public class Something { public List<Example> ke

我是C#的初学者,遇到了一个相当不寻常的问题。现在,虽然我的代码目前工作正常,但我希望有更好的方法来实现它。有问题的代码在我的列表的
ForEach
中。这两个示例类继承了示例。我希望有更好的方法来检查并以更可重用的方式(方法)执行以下代码,因为我在代码的其他地方使用了这样的检查和应用程序

public interface Example
{
    // some stuff
}

public class Something
{
    public List<Example> keybind ... // instantiate

    public Something()
    {
        keybind.ForEach(b =>
        {
            // these checks are what I want to reuse
            if (b.GetType() == typeof(Example1)
                (b as Example1).Value = // new value
            if (b.GetType() == typeof(Example2)
                (b as Example2).Value = // new value
        }
    }
}
公共接口示例
{
//一些东西
}
公开课
{
public List keybind…//实例化
公开某事
{
keybind.ForEach(b=>
{
//这些检查是我想重复使用的
if(b.GetType()==typeof(示例1)
(b如示例1所示)。Value=//新值
if(b.GetType()==typeof(示例2)
(b如示例2所示)。Value=//新值
}
}
}

那么根本不做检查-这就是接口的用途。如果在接口中定义了一个属性
,那么实现该接口的任何类都需要实现该属性,从而完全不需要强制转换

public interface Example
{
    string Value { get; set; }
}

public class Something
{
    public List<Example> keybind... // instantiate

    public Something()
    {
        keybind.ForEach(b =>
        {
            b.Value = // new value
        }
    }
}
            if (b is Example1 ex1)
            {
                //do stuff
            }