我有一个抽象基类,我在扩展程序集中从它继承。这是我的代码
region Contract Assembly
public interface IDummy
{
int ForAbstractMethod();
int ForVirtualMethod();
}
public abstract class BaseClass : IDummy
{
public abstract int ForAbstractMethod();
public virtual int ForVirtualMethod()
{
//Some base functionality
return 0;
}
}
#endregion
#region Extension Assembly
public class SomeExtension : BaseClass
{
public override int ForAbstractMethod()
{
//I implement this method here, which is defined abstract in base class and this one works fine.
return 100;
}
public override int ForVirtualMethod()
{
//Even though I override the virtual one here, still the one in the base class executes.
return 1;
}
}
#endregion
#region Main Program Assembly which references Contract Assembly
public class Program
{
void Main()
{
//... compose catalog and other stuff
IDummy dummy = someFactory.GetInstanceFromCatalog<IDummy>();//I get an instance
int a = dummy.ForAbstractMethod();//this works as expected and returns 100
a = dummy.ForVirtualMethod();//here I expect it to return 1 since I overrode it in child class, but it returns still 0.
//...other stuff
}
}
我不知道的覆盖虚拟方法和抽象方法之间是否有任何区别,或者这是 MEF 的特定情况?谢谢你的帮助...