J'ai une classe de base abstraite et j'en hérite dans un assembly d'extension. Et voici mon code region Contract Assembly
C# surcharger les méthodes virtuelles dans la classe MEF ne fonctionne pas
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
}
}
Existe-t-il des différences entre les méthodes virtuelles et abstact prioritaires que je ne connais pas ou il s'agit d'un cas spécifique pour MEF? Merci pour toute aide ...
J'ai rencontré le même problème. Êtes-vous arrivé à une décision? –