#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Daniel Grunwald b46cfa7e29 Added CastTests. 16 years ago
ICSharpCode.NRefactory Added CastTests. 16 years ago
ICSharpCode.NRefactory.Tests Added CastTests. 16 years ago
doc Added CastTests. 16 years ago
.gitattributes Add gitattributes 16 years ago
NRefactory.sln Add C# resolver. 16 years ago
README Added CastTests. 16 years ago

README

Overview of the NRefactory library:

ICSharpCode.NRefactory.TypeSystem:
Contains a language-independent representation of the .NET type system.

ICSharpCode.NRefactory.TypeSystem.Implementation:
Contains base classes that help implementing the type system interfaces.

ICSharpCode.NRefactory.CSharp.Dom:
Abstract Syntax Tree for C#

ICSharpCode.NRefactory.CSharp.Resolver:
Semantic analysis for C#

Null-Object pattern:
The NRefactory library makes extensive use of the null object pattern.
As a reult, NullReferenceExceptions should be very rare when working with this library.
In the type system, both ITypeReference and IType use SharedTypes.UnknownType to represent unknown types.
Unless the method is documented otherwise, no method or property returning a ITypeReference or IType will return null.
When adding to this library, to try to keep such uses of null rare.

Note that the null object pattern is not used for ITypeDefinition:
IProjectContent.GetClass() returns null when a type is not found. Take care to abort your operation or substitute UnknownType
instead of passing the null to code expecting an IType.

The pattern also extends to the C# resolver, which always produces a ResolveResult, even in error cases.
Use ResolveResult.IsError to detect resolver errors. Also note that many resolver errors still have a meaningful type attached,
this allows code completion to work in the presence of minor semantic errors.