C# 将方法参数强制转换为类。接口相关
我有三个实现接口的类,我需要一个接受这样一个对象的方法。接口,例如:C# 将方法参数强制转换为类。接口相关,c#,.net,C#,.net,我有三个实现接口的类,我需要一个接受这样一个对象的方法。接口,例如: public interface IFoo { void DoThis(); } 其中一类: public class Bar: IFoo { public void DoThis(); } 以及我想要的方法,即在表格上: private void DoStuff(object o){ o.DoThis(); } 如何实现在DoStuff(对象o)方法中调用DoThis()方法?这应该可以: private
public interface IFoo {
void DoThis();
}
其中一类:
public class Bar: IFoo {
public void DoThis();
}
以及我想要的方法,即在表格上:
private void DoStuff(object o){
o.DoThis();
}
如何实现在DoStuff(对象o)
方法中调用DoThis()
方法?这应该可以:
private void DoStuff(IFoo o){
o.DoThis();
}
或者这个:
private void DoStuff(object o){
IFoo ifoo;
try
{
ifoo = (IFoo)o;
}
catch(InvalidCastException ice)
{
/* whatever "this isn't IFoo" logic you want here */
throw;
}
ifoo.DoThis();
}
像这样声明您的方法::
private void DoStuff(IFoo o){
o.DoThis();
}
否则不能使用
IFoo
接口成员 如果签名无法更改,另一个选项:
private void DoStuff<T>(T o) where T : IFoo
{
o.DoThis();
}
private void DoStuff(object o){
IFoo foo = (IFoo) o;
foo.DoThis();
}
通常有比在运行时获取InvalidCastException更好的选项。
private void DoStuff(object o){
IFoo foo = (IFoo) o;
foo.DoThis();
}