Windows Vista Forums
Vista Forums Home Join Vista Forums Windows 7 Forum Vista Tutorials Tags
Welcome to Windows Vista Forums. Our forum is dedicated to helping you find solutions with any problems, errors or issues you are experiencing with Windows Vista. The Vista forum also covers news and updates and has an extensive Windows Vista tutorial section that covers a wide range of tips and tricks.

Go Back   Vista Forums > Misc Newsgroups > .NET General

Vista - Equivalent of template specialization using .NET Generics?

Reply
 
Old 05-08-2008   #1 (permalink)
Duncan Smith


 
 

Equivalent of template specialization using .NET Generics?

I know that template specializtion is not included in generics, but
was wondering whether or not there is an elegant alternative?

The first function is always called, but I was hoping that for
instances of type RealPoint (ComparePointByFiaNumber<RealPoint)>) the
second function would be called.

To implement different behavious based upon the type, do I have to
have a switch within Equals() that will check the type of T and then
call different functions as needed?

Many thanks,

Duncan

generic<typename T>
ref class ComparePointByFiaNumber : Generic::IEqualityComparer<T>
{
public:

virtual bool Equals( T x, T y )
{
Generic::IEqualityComparer<T>^ equalityComparer =
Generic::EqualityComparer<T>:efault;
return equalityComparer->Equals( x,y );
}

virtual bool Equals( RealPoint^ x, RealPoint^ y )
{
return true;
}

My System SpecsSystem Spec
Old 05-08-2008   #2 (permalink)
Duncan Smith


 
 

Re: Equivalent of template specialization using .NET Generics?

On May 8, 1:16*pm, Duncan Smith <DSmith1...@xxxxxx> wrote:
Quote:

> I know that template specializtion is not included in generics, but
> was wondering whether or not there is an elegant alternative?
>
Not as pretty as C++ but in the end I went for:

generic<typename T>
ref class ComparePointByFiaNumber : Generic::IEqualityComparer<T>
{
public:

virtual bool Equals( T x, T y )
{
if( x->GetType() == RealPoint::typeid )
{
return safe_cast<RealPoint^>(x)->First ==
safe_cast<RealPoint^>(y)->First;
}

Generic::IEqualityComparer<T>^ equalityComparer =
Generic::EqualityComparer<T>:efault;
return equalityComparer->Equals( x,y );
}

virtual int GetHashCode( T obj )
{
return 0;
}
};
My System SpecsSystem Spec
Reply

Thread Tools


Similar Threads
Thread Forum
Generics and collections .NET General
Re: Generics and comparison (follow on from my previous "Generics and collections" thread) .NET General
Re: Generics and comparison (follow on from my previous "Generics and collections" thread) .NET General
Checking for DBNull with generics .NET General


Vista Forums is an independent web site and has not been authorized,
sponsored, or otherwise approved by Microsoft Corporation.
"Windows Vista", the Start Orb, and related materials are trademarks of Microsoft Corp.
© Designer Media Ltd

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46