C# 如何将动态对象设置为正确的类型

C# 如何将动态对象设置为正确的类型,c#,object,dynamic,casting,C#,Object,Dynamic,Casting,这是我移动滚动条的功能(我有水平滚动条和垂直滚动条) 如果两种类型都是从类继承的,则只需执行一次强制转换: private void moveTheScroll(object sbar, int scrollDiff) { var scrollBar = sbar as ScrollBar; if(scrollBar != null) { int newScrollvalue = scrollBar.Value + scrollDiff;

这是我移动滚动条的功能(我有水平滚动条和垂直滚动条)


如果两种类型都是从类继承的,则只需执行一次强制转换:

private void moveTheScroll(object sbar, int scrollDiff)
{
    var scrollBar = sbar as ScrollBar;

    if(scrollBar != null)
    {
         int newScrollvalue = scrollBar.Value + scrollDiff;
         // do other works with scrollBar...
    }
}

HScrollBar和VScrollBar都实现了接口或基类吗?是的,我已经用它实现了scrollbarsBetter,如果您更改参数的类型,您可以完全避免强制转换。
var v;
if(sbar is HScrollBar)
    v = (HScrollBar)sbar;
else if(sbar is VScrollBar)
    v = (VScrollBar)sbar;
v.Value = newValue;
private void moveTheScroll(object sbar, int scrollDiff)
{
    var scrollBar = sbar as ScrollBar;

    if(scrollBar != null)
    {
         int newScrollvalue = scrollBar.Value + scrollDiff;
         // do other works with scrollBar...
    }
}