在C#中使用类接口时有没有缩短语法的方法?
假设我创建了一个Slider用户控件,它实现了ISlider接口。我有一些方法,比如下面的SetValue,它应该同时接受ISlider类型和标准的Slider控件类型。我必须使用这种繁重的语法吗?有什么捷径吗在C#中使用类接口时有没有缩短语法的方法?,c#,.net,asp.net,wpf,C#,.net,Asp.net,Wpf,假设我创建了一个Slider用户控件,它实现了ISlider接口。我有一些方法,比如下面的SetValue,它应该同时接受ISlider类型和标准的Slider控件类型。我必须使用这种繁重的语法吗?有什么捷径吗 public void SetValue(Object slider, Double value) { ISlider ISlider; ISlider = slider as ISlider; if (ISlider != null) {
public void SetValue(Object slider, Double value) {
ISlider ISlider;
ISlider = slider as ISlider;
if (ISlider != null)
{
ISlider.Value = value;
}
else
{
((Slider)slider).Value = value;
}
由于无法使wpf
滑块
控件继承自ISlider
,请使用重载方法
public void SetValue(ISlider slider, double value)
{
slider.Value = value;
}
public void SetValue(Slider slider, double value)
{
slider.Value = value;
}
这并不漂亮,但可以省去您的麻烦,因为您不必检查对象的类型是否正确。为什么不使用
滑块
实现ISlider
?或者,为什么不提供一个ISlider
的实现,它包装了一个滑块
,这样您就只需要处理界面了。因为滑块是Microsoft的标准控件。据我所知,我不能用类接口扩展这样的控件,也许我错了?这就是为什么我说“或者,提供一个包含滑块的ISlider实现”。这就是我正在做的,但我的方法仍然应该继续使用标准控件,所以我的问题:)我想你没有抓住我的重点。如果有一个适配器包装了滑块
并实现了ISlider
,那么您将把适配器实例传递给您的方法,因此您的方法将借助适配器与滑块
协同工作。这对OP的代码有什么帮助?因为变量是object
重载解析不可用。我假设他向方法提供Slider
或ISlider
实例。但是,如果他愿意提供对象
,您是正确的。考虑到他接受了我的回答,我的假设似乎是正确的。