У меня есть абстрактный базовый класс, и я наследую его от сборки расширения. И вот мой код region Contract Assembly
C# переопределение виртуальных методов в классе MEF не работает
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? Спасибо за любую помощь ...
Я столкнулся с той же проблемой. Вы пришли к решению? –