如果我在抽象类中有一个方法:
public virtual DoSomething(out MyBase base1){}
但是在我的派生类中,我需要使用派生自MyBase的类中的方法,我需要这样的东西:
public override DoSomething(out MyBaseCustom base1){}
获得此功能的正确方法是什么?
答案 0 :(得分:0)
第1步使基类通用
setof/3
第2步从基类派生时,请执行此操作
public abstract class BaseClass<T>
{
public virtual void DoSomething(out T c)
{
// somehow assign c of course
}
}
不是超级优雅,但做的工作
第1步使基类通用
public class DerivedClass : BaseClass<DerivedClass>
{
public override void DoSomething(out DerivedClass c)
{
// somehow assign c of course
}
}
和
第2步从基类派生时,请执行此操作
public abstract class BaseClass<T>
{
public abstract void DoSomething(out T c);
}
答案 1 :(得分:0)
如果可以,我会尝试将out参数设为接口。哪个会给你这样的结果代码:
public abstract class MyClass
{
public virtual void DoSomething(out IMyObject obj)
{
obj = new MyObject();
}
}
public class MyChildClass : MyClass
{
public override void DoSomething(out IMyObject obj)
{
obj = new MyChildObject();
}
}
public interface IMyObject
{
}
public class MyObject : IMyObject
{
}
public class MyChildObject : MyObject
{
}