Richard Conway
Teun Duynstee
Ben Hyrman
Roger Rowland
James Speer of Charteris plc
Apress™
Copyright 2003 Apress
All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher.
(pbk):
1-59059-257-3
Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark.
Distributed to the book trade in the United States by Springer-Verlag New York, Inc., 175 Fifth Avenue, New York, NY, 10010 and outside the United States by Springer-Verlag GmbH & Co. KG, Tiergartenstr. 17, 69112 Heidelberg, Germany.
In the United States: phone 1-800-SPRINGER, email orders@springer-ny.com, or visit http://www.springer-ny.com. Outside the United States: fax +49 6221 345229, email orders@springer.de, or visit http://www.springer.de.
For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley, CA 94710. Phone 510-549-5930, fax 510-549-5939, email info@apress.com, or visit http://www.apress.com.
The information in this book is distributed on an "as is" basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work.
The source code for this book is available to readers at http://www.apress.com in the Downloads section.
Some material first published in a different form in Visual Basic .NET Class Design Handbook (1-86100-708-6), May 2002
Credits
Editorial Board
Dan Appleman
Craig Berry
Gary Cornell
Tony Davis
Steven Rycroft
Julian Skinner
Martin Streicher
Jim Sumser
Karen Watterson
Gavin Wright
John Zukowski
Additional Material
Damon Allison
Andy Olsen
Steven Sartain
Commissioning Editor
James Hart
Technical Editors
Fatema Beheranwala
Nilesh Parmar
Additional Editing
Andrew Polshaw
Technical Reviewers
Andrew Krowczyk
Roger Rowland
Managing Editor
Emma Batch
Index
Michael Brinkman
Project Manager
Beckie Stones
Production Coordinator
Sarah Hall
Proof Reader
Chris Smith
Cover
Natalie O'Donnell
About the Authors
Richard Conway
Richard Conway started programming BASIC with the ZX81 at an early age later graduating to using BASIC and 6502 assembly language, COMAL, and Pascal for the BBC B and Archimedes RISC machines. He is an independent software consultant who lives and works in London. He has been using Microsoft technologies for many years and has architected and built enterprise systems for the likes of IBM, Merrill Lynch, and Reuters. He has focused his development on Windows DNA including various tools and languages such as COM+, VB, XML, C++, J++, BizTalk, and more recently, Data Warehousing. He has been actively involved in EAP trials with Microsoft for .NET My Services and the .NET Compact Framework. He has spent the last two and a half years since the release of the technical preview (of VS.NET) programming proof-of- concept and enterprise system projects in C#. His special area of interest is Network Security and Cryptography. Richard is a contributor to both C# Today and ASP Today. He is currently involved in a product development and consultancy alliance – http://www.vertexion.co.uk – specializing in data warehousing and security products.
He can be contacted at
richard.conway@vertexon.co.uk.
Teun Duynstee
Teun Duynstee lives in the Netherlands. He works with Macaw as a lead software developer and loves programming, his girlfriend Marjolein, and Arnie the cat.
Ben Hyrman
Ben works as a Program Architect for Best Buy, in tropical Minneapolis, Minnesota. Ben enjoys the balmy Minnesota weather with his loving wife, Dawn, and an overactive mutt of a dog, Bandit. When they're not busy with work or off on road trips, Ben and Dawn enjoy painting their house and arguing over database design patterns.
I would like to thank Damon Allison for being my sounding board for all of my crazy ideas. I'd also like to thank Richard Scott, because he's British and he asked me to. Lastly, I'd like to thank Wrox for this excellent opportunity.
Roger Rowland
Roger Rowland is a freelance IT Consultant based in the UK. He has 25 years of software development experience on a variety of platforms, and is a regular contributor to the Wrox C# Today web site. He currently specializes in Microsoft technologies including VC++, VB, C#, SQL, and ASP. Roger is a member of the Institution of Analysts and Programmers, a professional member of the British Computer Society, and a member of the IEEE Computer Society. He holds a Masters Degree in computing and is currently undertaking a part-time PhD at the University of East Anglia researching into medical imaging and computer assisted surgery. Research techniques include 3D graphics and volume rendering using OpenGL, and he has published a number of academic papers. Married, with two children and always incredibly busy, Roger may nevertheless be contacted at roger.rowland@rmrsystems.co.uk.
James Speer of Charteris plc
James has been a software developer since 1987, beginning his career programming in BCPL and C++. He currently specializes in .NET component development, particularly - C#, .NET Remoting, Serviced Components and MSMQ. James is currently employed by Charteris plc (http://www.charteris.com) as a Senior Developer and can be reached at james.speer@charteris.com.
Thanks to Mom and Dad for the Acorn Electron and June for lending me your Vic 20.
C# Class Design Handbook
The book takes a top-down look at what exactly makes up a class in .NET. We begin by describing what a type is, and how classes relate to the .NET type framework. Then we examine what makes up types: type members. We devote the majority of the book to looking at the different mechanisms C# provides for defining type members (methods, constructors, properties, operators, and events), and finally examine how types go together to make up assemblies.