mardi 27 octobre 2015

Abstract method to be overridden with concrete type

Maybe this is a dumb question. But, I don't get the point what I am missing.

Given the following class-definition

public abstract class AbstractBaseClass
{
    public abstract void Create(AnotherAbstractClass param1);
}

Wheras AnotherAbstractClass is defined

public abstract class AnotherAbstractClass
{
}

with a concrete implementation

public class AnotherConcreteImplementation : AnotherAbstractClass
{
}

I want to be able to have the override of the Create method to use a concrete type:

public class ConcreteImplementation : AbstractBaseClass
{
    public override void Create(AnotherConcreteImplementation param1) <-- There is no suitable method for override
    {
        // param1 is an instance of the concrete implementation
    }

    public override void Create(AnotherAbstractClass param1) <-- this is working but I'll have to cast on each implementation
    {
        // param1 is an instance of the abstract class and needs a cast
    }
}

Is this simply not possible or is there some way I'm not aware of? Maybe using generics?

Aucun commentaire:

Enregistrer un commentaire