Home All Groups Group Topic Archive Search About

Comparer in generics

Author
1 Mar 2006 4:25 PM
Marco Sellani
I developed a comparer class for a base class BEBase

public class BEBaseComparer:IComparer<BEBase>
....
....

but, i can't use this comparer with a derived class...

public class Pippo:BEBase
....


I'd like to sort a List<Pippo> using the BEBaseComparer

but lista.Sort(bc) where bc is a istance of BEBaseCompare do compiler error!!

How can'i do it ??

TIA, Marco Sellani

Author
2 Mar 2006 7:46 AM
Nick Hounsome
public class BEBaseComparer<T> :IComparer<T> where T:BEBase
{
    public int Compare(T a,T b)
    {
        return a.BEBaseProperty ...............
    }
}

It is rarely a good idea for a non-generic to inherit from a generic in C#.

It is more common in C++ because you can have a base reference the derived
class.

Show quote
"Marco Sellani" <MarcoSell***@discussions.microsoft.com> wrote in message
news:F24A34F1-FE71-4A31-98EE-D50F94718D1A@microsoft.com...
>I developed a comparer class for a base class BEBase
>
> public class BEBaseComparer:IComparer<BEBase>
> ...
> ...
>
> but, i can't use this comparer with a derived class...
>
> public class Pippo:BEBase
> ...
>
>
> I'd like to sort a List<Pippo> using the BEBaseComparer
>
> but lista.Sort(bc) where bc is a istance of BEBaseCompare do compiler
> error!!
>
> How can'i do it ??
>
> TIA, Marco Sellani
Author
2 Mar 2006 8:39 AM
Marco Sellani
Thank you very much.

Marco Sellani.

Show quote
"Nick Hounsome" wrote:

> public class BEBaseComparer<T> :IComparer<T> where T:BEBase
> {
>     public int Compare(T a,T b)
>     {
>         return a.BEBaseProperty ...............
>     }
> }
>
> It is rarely a good idea for a non-generic to inherit from a generic in C#.
>
> It is more common in C++ because you can have a base reference the derived
> class.
>
> "Marco Sellani" <MarcoSell***@discussions.microsoft.com> wrote in message
> news:F24A34F1-FE71-4A31-98EE-D50F94718D1A@microsoft.com...
> >I developed a comparer class for a base class BEBase
> >
> > public class BEBaseComparer:IComparer<BEBase>
> > ...
> > ...
> >
> > but, i can't use this comparer with a derived class...
> >
> > public class Pippo:BEBase
> > ...
> >
> >
> > I'd like to sort a List<Pippo> using the BEBaseComparer
> >
> > but lista.Sort(bc) where bc is a istance of BEBaseCompare do compiler
> > error!!
> >
> > How can'i do it ??
> >
> > TIA, Marco Sellani
>
>
>

AddThis Social Bookmark Button