我想将数组中的派生类作为其基类。 然后在数组上循环并让派生类调用一个接收相同数据库的函数,但每个派生类都应该将该数据库作为不同的接口接收。使用派生参数覆盖函数
有没有另一种方法来实现这种情况?
这就是我试图这样做,但覆盖无法找到合适的虚函数:
public interface IBase
{
}
public interface IClass1 : IBase
{
bool[] IsEnable { get; }
}
public interface IClass2 : IBase
{
bool[] IsEnable { set; }
}
public class DB : IBase, IClass1, IClass2
{
public bool[] IsEnable { get; set; }
}
public abstract class Base
{
public virtual void fRun(IBase p_oOb)
{
}
}
class MyClass1 : Base
{
public override void fRun(IClass1 p_oOb)
{
Console.WriteLine("MyClass1 fRun.");
}
}
class MyClass2 : Base
{
public override void fRun(IClass2 p_oOb)
{
Console.WriteLine("MyClass2 fRun.");
}
}
class Program
{
static void Main(string[] args)
{
DB db = new DB();
Base[] classes = new Base[] {new MyClass1(), new MyClass2()};
foreach (var Class in classes)
{
Class.fRun(db);
}
}
}
为什么你不能在被重写的物体内强制使用'IBase'作为所需的接口? – slawekwin
我可以做到这一点..但在这种情况下,myClassx拥有整个数据库的权限,并取决于它自己的权限/可访问性。 –
只要'IClassx'继承自'IBase',是不是这样?也许创建另一个假接口只是为了争取参数的基础。 – slawekwin