473,941 Members | 14,820 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Generic Collection Pattern

Without generics generally I'd dervie from CollectionBase to create typed
collections. Generics mostly fill in this gap except that there are no
virtual methods on List<T> so we can no longer notify other object when a
collection changes during add, remove and set operations. I was curious how
Others were getting around this problem? I thought of doing something like:

class MyCollection : IList<T>, ICollection<T>
{
private List<T> m_list;
}

Then simply operate on m_list for each of the implementation of the
interfaces. I feel like there's a simpler solution out there that I'm not
seeing.

Thanks
Jun 1 '06 #1
5 1989
"Brian Richards" <br*******@gmai l.com> a écrit dans le message de news:
OW************* *@TK2MSFTNGP05. phx.gbl...

| Without generics generally I'd dervie from CollectionBase to create typed
| collections. Generics mostly fill in this gap except that there are no
| virtual methods on List<T> so we can no longer notify other object when a
| collection changes during add, remove and set operations. I was curious
how
| Others were getting around this problem? I thought of doing something
like:

Take a look at BindingList<T>.

Joanna

--
Joanna Carter [TeamB]
Consultant Software Engineer
Jun 1 '06 #2
Thanks! Looks like what I was looking for.

-Brian

"Joanna Carter [TeamB]" <jo****@not.for .spam> wrote in message
news:uz******** ******@TK2MSFTN GP04.phx.gbl...
"Brian Richards" <br*******@gmai l.com> a écrit dans le message de news:
OW************* *@TK2MSFTNGP05. phx.gbl...

| Without generics generally I'd dervie from CollectionBase to create typed | collections. Generics mostly fill in this gap except that there are no
| virtual methods on List<T> so we can no longer notify other object when a | collection changes during add, remove and set operations. I was curious
how
| Others were getting around this problem? I thought of doing something
like:

Take a look at BindingList<T>.

Joanna

--
Joanna Carter [TeamB]
Consultant Software Engineer

Jun 1 '06 #3

Brian Richards wrote:
Without generics generally I'd dervie from CollectionBase to create typed
collections. Generics mostly fill in this gap except that there are no
virtual methods on List<T> so we can no longer notify other object when a
collection changes during add, remove and set operations. I was curious how
Others were getting around this problem?


I asked a similar question here: <http://tinyurl.com/lntcp>

--
Larry Lard
Replies to group please

Jun 1 '06 #4
Just hide the base class's method with the new operator. Example (from a
class the inherits System.Collecti ons.Generic.Dic tionary):

new virtual public void Add(string key, T value)
{
base.Add(key, value);
// add an event here if you wish.
}

--
HTH,

Kevin Spencer
Microsoft MVP
Professional Development Numbskull

Abnormality is anything but average.

"Brian Richards" <br*******@gmai l.com> wrote in message
news:OW******** ******@TK2MSFTN GP05.phx.gbl...
Without generics generally I'd dervie from CollectionBase to create typed
collections. Generics mostly fill in this gap except that there are no
virtual methods on List<T> so we can no longer notify other object when a
collection changes during add, remove and set operations. I was curious
how
Others were getting around this problem? I thought of doing something
like:

class MyCollection : IList<T>, ICollection<T>
{
private List<T> m_list;
}

Then simply operate on m_list for each of the implementation of the
interfaces. I feel like there's a simpler solution out there that I'm not
seeing.

Thanks

Jun 1 '06 #5
That's not such a hot idea if you intend passing the container around cast
as an interface or as an instance of the base class; if you can't override,
then you can /only/ change the behaviour when code knows the object /as/ the
new class. Personally I wouldn't advise this.

Marc
Jun 1 '06 #6

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

8
1840
by: JAL | last post by:
Here is my first attempt at a deterministic collection using Generics, apologies for C#. I will try to convert to C++/cli. using System; using System.Collections.Generic; using System.Text; namespace DeterminedGenericCollection { // I got tired of copy and pasting IDisposable
8
3293
by: Steven Cummings | last post by:
Hello, I've scoured this usenet group and didn't find anything specific to my problem, so hopefully this won't be a repeated question. I'm all but certain it's not. I would like to *declare* (not just instantiate at runtime) a generic collection whose element-type is a generic class too. But I don't want to declare what the element-type's generic parameters are.
3
5555
by: snesbit | last post by:
I have a structure called SearchAreaListItem. The structure has some properties. The application implements this as a collection.generic.list(of SearchAreaListItem) I load the collection up item at a time stuffing values into the item then adding the item to the collection.
9
12878
by: mps | last post by:
I want to define a class that has a generic parameter that is itself a generic class. For example, if I have a generic IQueue<Tinterface, and class A wants to make use of a generic class that implements IQueue<Tfor all types T (so it can make use of queues of various object types internally). As useful as this is, it doesn't seem possible. The natural (but illegal) notation would be something like class A<QueueClasswhere QueueClass :...
4
7580
by: =?Utf-8?B?QkogU2FmZGll?= | last post by:
We have a class that has a public property that is of type List<T>. FXCop generates a DoNotExposeGenericLists error, indicating "System.Collections.Generic.List<Tis a generic collection designed for performance not inheritance and, therefore, does not contain any virtual members. The following generic collections are designed for inheritance and should be exposed instead of System.Collections.Generic.List<T>. *...
5
2177
by: sloan | last post by:
I've noticed alot of people tacking on a "T" for a generic abled version of an older class. Ex: 1.1 Code IDataStore
2
2159
by: jehugaleahsa | last post by:
Hello: I was reading another post and saw an argument (sort of) that brought up a good question. I have written a fairly large library of algorithms that occur in programming all the time. It mixes the C++ STL and the Power Collections Algorithms class. Recently a coworker of mine asked me what the deal was with anonymous
9
3163
by: tadmill | last post by:
Is it possible to pass a generic parameter of the same class to to its constructor, where the "T" type passed in the constructor is different than the "T" type of the instanced class? ie, public class SomeList<T> { public SomeList(SomeList<TthisSomeList)
2
4197
by: SimonDotException | last post by:
I am trying to use reflection in a property of a base type to inspect the properties of an instance of a type which is derived from that base type, when the properties can themselves be instances of types derived from that base type, or arrays or generic collections of instances of types derived from that base type. All is well until I come to the properties which are generic collections, I don't seem to be able to find an elegant way of...
0
10134
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
11530
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
11117
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
11297
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
10659
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
1
8218
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
7390
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
6080
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
3
3508
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.