Board index » Visual Studio » Creating Your own Namespace...

Creating Your own Namespace...

Visual Studio80
Something thats been bugging me for a while...



how do you create a namespace that has many children (namespaces)



I.e system.io.blah.blah



Iv'e done it by creating a class which contains another class.



i can see the properties of the first class and the namespace of the second

(inner class) but can't see the properties of the 2nd....



This might not have been put very well............


-
 

Re:Creating Your own Namespace...

Thus spake Simon Edwards:



Quote
how do you create a namespace that has many children (namespaces)



Just specify the desired namespace in each file:



(File A)

namespace MyUtilityLibrary.Data



(File B)

namespace MyUtilityLibrary.Data.Sql



--

There are 10 kinds of people. Those who understand binary and those who

don't.



code.acadx.com">code.acadx.com





-

Re:Creating Your own Namespace...

Ok i've put something together as an example...



Public Class Test1



Public ReadOnly Property test1_prop()



Get



End Get



End Property



Public Class Test2



Public ReadOnly Property test2_prop()



Get



End Get



End Property



End Class



End Class







The above when insntaned will let you see the test1 property and the test 2

class but not thye test2 property?



i want to build my own classes with a structure similar to how dot net works

with its namespaces



franko@acadx.com>wrote in message



Quote
Thus spake Simon Edwards:



>how do you create a namespace that has many children (namespaces)



Just specify the desired namespace in each file:



(File A)

namespace MyUtilityLibrary.Data



(File B)

namespace MyUtilityLibrary.Data.Sql



--

There are 10 kinds of people. Those who understand binary and those who

don't.



code.acadx.com">code.acadx.com









-

Re:Creating Your own Namespace...

Hello,



"Simon Edwards" <simonedwards52@hotmail.com>schrieb:

Quote
how do you create a namespace that has many children

(namespaces)



I.e system.io.blah.blah



Iv'e done it by creating a class which contains another class.



i can see the properties of the first class and the namespace of the

second

(inner class) but can't see the properties of the 2nd....



This might not have been put very well............



\\\

Namespace Bla

Namespace Foo

...

End Namespace



Namespace Gac

...

End Namespace

End Namespace



Namespace Moo

...

End Namespace



Namespace Moo.Baz

...

End Namespace



Namespace Moo.Goo

...

End Namespace

///



--

Herfried K. Wagner

MVP · VB Classic, VB.NET

www.mvps.org/dotnet">www.mvps.org/dotnet





-

Re:Creating Your own Namespace...

Thus spake Simon Edwards:



Quote
i want to build my own classes with a structure similar to how dot

net works with its namespaces



Your example shows nested classes, not namespaces. Typically, a nested

class is meant for use only within its parent class. Namespaces are

simply organizational units.



Let's say you have a console application project with three files. The

first one we'll leave alone. In the second one, change the namespace to

MyConsoleApp.Blah. in the third one, change the namespace to

MyConsoleApp.Blah.Blah.



Now go back to the first file and add a pair of using directives:



using MyConsoleApp.Blah;

using MyConsoleApp.Blah.Blah.



See how the IntelliSense pops out? Now that you have multiple

namespaces, you can use them to organize your classes as you see fit.



--

There are 10 kinds of people. Those who understand binary and those who

don't.



code.acadx.com">code.acadx.com





-

Re:Creating Your own Namespace...

Hello,



"Simon Edwards" <simonedwards52@hotmail.com>schrieb:

Quote
Ok i've put something together as an example...



Public Class Test1



Public ReadOnly Property test1_prop()



Get



End Get



End Property



Public Class Test2



Public ReadOnly Property test2_prop()



Get



End Get



End Property



End Class



End Class







The above when insntaned will let you see the test1

property and the test 2 class but not thye test2 property?



i want to build my own classes with a structure similar to

how dot net works with its namespaces



Classes are different from namespaces. Are you sure you understand the

difference between them? If you don't understand it, I would suggest to

have a quick look at the VB.NET documentation. Your sample shows a

declaration of a class inside a class, this has nothing to do with

namespaces.



--

Herfried K. Wagner

MVP · VB Classic, VB.NET

www.mvps.org/dotnet">www.mvps.org/dotnet





-

Re:Creating Your own Namespace...

Hi Simon,



Namespaces are for differentiating between classes (and other entities)

which have the same name.



Consider:

Namespace Edwards

Class Simon

End Class

End Namespace



Namespace Jones

Class Simon

End Class

End Namespace



Now, somewhere else, I want to create an instance of a Simon.

Dim MyMan As Simon



This will fail, however, - the compiler complaining that there is a choice

of two.



I have to qualify it with the appropriate namespace.

Dim MyMan As Edwards.Simon



This will work and that, simplified, is what namespaces are for.



===============================

Nested classes are for when you need the facilities that a class provides

but only for the exclusive use of the outer class. This is not as common a

situation as you seem to be implying. Usually the inner class will be Private

or Protected. If it is going to be Public, there's little point in having it

nested.



Public Class clsOuter

Public OuterField As New clsInner

Public Class clsInner

Public InnerField As Integer = 3

End Class

End Class



Somewhere you declare an instance of the outer class:

Dim oFoo As clsOuter



This will create an instance of clsInner for itself and that will set its

InnerField to 3.



With oFoo you can access OuterField but not InnerField.

With oFoo.OuterField you can access InnerField.



===============================

Usually you have the inner class as Private and expose it indirectly using

Properties.



Public Class clsOuter

Private MyInner As New clsInner

Public ReadOnly Property OuterProp As Integer

Get

Return MyInner.InnerField

End Get

End Property

Private Class clsInner

Public InnerField As Integer = 3

End Class

End Class



Somewhere you declare an instance of the outer class:

Dim oFoo As clsOuter



This will again create an instance of clsInner for itself whiich will set

its InnerField to 3.



With oFoo you can only access OuterProp which will give you InnerField's

value.



===============================

I'm intrigued - can you tell us more about this hierarchy that you want to

build ?



Regards,

Fergus





-

Re:Creating Your own Namespace...

I am only using C#, but I assume this works the same way in VB.NET; The

answer applies to projects in visual studio.net.



You may change the default namespace of your project by using the properties

on the project; right-click the project-name, select "properties", find

"default namespace". Here you may want to change from the "project-name"

(which is the normal) to "company.project" or something.



Further, by creating subdirectories in the project folder, the namespace for

new elements will default to the default namespace-name of elements in the

parent directory + the name of the directory.



You may also change the namespace manually using the namespace-statement;

this is what automatically happens using the methods mentioned above.



What I think would be normal with regards to namespace; would be to make

library-projects with sensible namespaces for what library it is;

company.controls.winforms company.net.smtp; and such; and in the main

program just use the default namespace. You may want to subdivide some

libraries, then you would use folders to create new namespaces.



Regards,



Harald Bjorøy

www.ulriken-consulting.no





"Simon Edwards" <simonedwards52@hotmail.com>wrote in message

Quote
Ok i've put something together as an example...



Public Class Test1



Public ReadOnly Property test1_prop()



Get



End Get



End Property



Public Class Test2



Public ReadOnly Property test2_prop()



Get



End Get



End Property



End Class



End Class







The above when insntaned will let you see the test1 property and the test

2

class but not thye test2 property?



i want to build my own classes with a structure similar to how dot net

works

with its namespaces



franko@acadx.com>wrote in message

news:eI19frvfDHA.2260@TK2MSFTNGP10.phx.gbl...



>Thus spake Simon Edwards:

>

>>how do you create a namespace that has many children (namespaces)

>

>Just specify the desired namespace in each file:

>

>(File A)

>namespace MyUtilityLibrary.Data

>

>(File B)

>namespace MyUtilityLibrary.Data.Sql

>

>--

>There are 10 kinds of people. Those who understand binary and those who

>don't.

>

>code.acadx.com">code.acadx.com

>

>









-

Re:Creating Your own Namespace...

Quick overview: Namespaces are used to organize and differentiate classes,

structures and other types. Declaring nested classes will allow you to

organize your classes, but you'll have troubles when you need to create

instances of the classes. Namespaces have little overhead and are more

purely for organizational purposes.



Check out the documentation at:

http://msdn.microsoft.com/library/default.asp?url" rel="nofollow" target="_blank">msdn.microsoft.com/library/default.asp=/library/en-us/vblr7/html/

vastmNamespace.asp





The frameworks classes are organized using namespace statements like the

following:



Namespace System



Namespace IO

Class Steam

End Class



Class File

End Class

End Namespace



Namespace Data

Class Connection

End Class

End Namespace

End Namespace



However, the Namespace statement in VB has a trick that will save you a

lot of typing: you can declare multiple nested namespaces in one Namespace

statement by using the "." to separate nested namespaces.



The following declaration declares three namespaces, System, IO, and

Stream, one nested within the other



NameSpace System.IO.Stream

Class Test

End Class

End Namespace



This is equivalent to



Namespace System

Namespace IO

Namespace Stream

Class Test

End Class

End Namespace

End Namespace

End Namespace





--------------------

Quote
From: "Simon Edwards" <simonedwards52@hotmail.com>

Subject: Creating Your own Namespace...

Date: Fri, 19 Sep 2003 22:59:11 +0100

Lines: 14

X-Priority: 3

X-MSMail-Priority: Normal

X-Newsreader: Microsoft Outlook Express 6.00.2800.1158

X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165

Organization: Ye 'Ol Disorganized NNTPCache groupie

Message-ID: <1064008901.67705@ananke.eclipse.net.uk>

Cache-Post-Path: ananke.eclipse.net.uk!unknown@81.168.16.121

X-Cache: nntpcache 2.4.0b5 (see www.nntpcache.org/)">www.nntpcache.org/)

Newsgroups:

microsoft.public.dotnet.framework,microsoft.public.dotnet.framework.interop,

microsoft.public.dotnet.framework.wmi,microsoft.public.dotnet.general,micros

oft.public.dotnet.languages.vb

Quote
NNTP-Posting-Host: ananke.eclipse.net.uk 212.104.129.36

Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP11.phx.gbl

Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.framework.interop:18914

microsoft.public.dotnet.framework.wmi:76

microsoft.public.dotnet.general:109235

microsoft.public.dotnet.languages.vb:139641

microsoft.public.dotnet.framework:54250

Quote
X-Tomcat-NG: microsoft.public.dotnet.languages.vb



Something thats been bugging me for a while...



how do you create a namespace that has many children (namespaces)



I.e system.io.blah.blah



Iv'e done it by creating a class which contains another class.



i can see the properties of the first class and the namespace of the second

(inner class) but can't see the properties of the 2nd....



This might not have been put very well............









-