Reputation: 25
I am very new to c# and this is probably a very n00b error.
For this project I have been handed existing code to work with. The structure of the code is that it has a main solution with simulation as a supporting namespace.
I copied one of the classes (Adt_12) from simulation namespace that I want to modify and renamed it (Pb_cs2). The way I copied is, was to click on save as.. and then changed the file name to the new name I want. And then changed the public class name (and the constructors) to this new file name. I have rebuild 'simulation' and it rebuilts fine.
But when I try to call Pb_cs2, it is throwing the above 'the type or namespace named Pb_cs2 could not be found'.
The way I am using it in the executable class in main; is public static Pb_cs2 pb; (which was originally using Adt_12).
But it can still find Adt_12 in the solution and namespace. Just no Pb_cs2. I have rebuilt and built the solution.
The common error of .NET framework is not relevant.
Any ideas why this is happening and how I can fix this? I really dont want to modify the original file.
Upvotes: 1
Views: 11638
Reputation: 1043
Ran into this today. In my case, I had defined a class with a property of DateTime, then every usage of my new class was throwing an error ever time i went to set the property. the error...
the type or namespace of DateTime could not be found
and with that, I forgot to include at the top of my class...
using System;
Upvotes: 0
Reputation: 1459
Do it this way to be sure the calss is known by your solution. Project->addclass select class if it isn't selected by now. Name it and then add the new class. it should appear in your solution explorer. Now copy paste the code. rename the class the namespace should be fine.
and you should be okay with that.
Upvotes: 1
Reputation: 23831
Add a reference to the namespace which contains the class you are calling. So you might have something like
namespace SomeNamespace
{
public class Pb_cs2
{
...
}
}
so you need to add using SomeNamespace;
to the declarations at the top of the file that is attempting to call your class. Or call the class using the fully qualified name
SomeNamespace.Pb_cs2 pbcs2 = new SomeNamespace.Pb_cs2();
You can also create a alias to the namespace when you reference it like
using NS = SomeNamespace;
then the above explicit reference can be called like
NS.Pb_cs2 pbcs2 = new NS.Pb_cs2();
I hope this helps.
Upvotes: 1
Reputation: 42360
Take a look here. Visual Studio saying name doesn't exist in current context
You need to make sure:
Your class name and namespace are not the same, like Pb_cs2.Pb_cs2
as this will confuse the compiler
You can fully qualify the path to the class i.e. MyNamespace.MyNestedNameSpace.MyClass
You can use a shortcut i.e. using MyClass = MyNamespace.MyNestedNamespace.Class1
Ensure that your projects are targeting the same framework i.e. .NET 4.0 / .NET 4.0 Client Profile.
You might have a collision where your class has the same name as another class, in which case, use option 2, or rename your class to something else.
If your class name does not appear in intellisense, then it does not know where to look for it. You can right click the class and click "Resolve" which will give you some options on how to qualify your class.
...that is all I can think of right now!...Good Luck!
Edit:
Look up C# stylistic conventions... those class names are ugly!!!
Upvotes: 1