Browse Source

Some refactoring in ClassBrowser.

newNRILSpyDebugger
Andreas Weizel 12 years ago
parent
commit
3c4c5a3422
  1. 26
      src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserPad.cs
  2. 20
      src/Main/SharpDevelop/Dom/ClassBrowser/Commands.cs

26
src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserPad.cs

@ -217,6 +217,30 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -217,6 +217,30 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
}
public static IAssemblyModel CreateAssemblyModelFromFile(string fileName)
{
try {
var loader = new CecilLoader();
loader.IncludeInternalMembers = true;
loader.LazyLoad = true;
var assembly = loader.LoadAssemblyFile(fileName);
IEntityModelContext context = new AssemblyEntityModelContext(assembly);
IAssemblyModel model = SD.GetRequiredService<IModelFactory>().CreateAssemblyModel(context);
if (model is IUpdateableAssemblyModel) {
((IUpdateableAssemblyModel)model).Update(EmptyList<IUnresolvedTypeDefinition>.Instance, assembly.TopLevelTypeDefinitions.ToList());
((IUpdateableAssemblyModel) model).AssemblyName = assembly.AssemblyName;
}
return model;
} catch (BadImageFormatException) {
SD.MessageService.ShowWarningFormatted("{0} is not a valid .NET assembly.", Path.GetFileName(fileName));
} catch (FileNotFoundException) {
SD.MessageService.ShowWarningFormatted("{0} is not accessible or doesn't exist anymore.", fileName);
}
return null;
}
static IAssemblyModel CreateAssemblyModelOrThrowException(string fileName)
{
var loader = new CecilLoader();
loader.IncludeInternalMembers = true;
@ -235,7 +259,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -235,7 +259,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
static IAssemblyModel SafelyCreateAssemblyModelFromFile(string fileName)
{
try {
return CreateAssemblyModelFromFile(fileName);
return CreateAssemblyModelOrThrowException(fileName);
} catch (Exception) {
// Special AssemblyModel for unresolved file references
IEntityModelContext unresolvedContext = new UnresolvedAssemblyEntityModelContext(Path.GetFileName(fileName), fileName);

20
src/Main/SharpDevelop/Dom/ClassBrowser/Commands.cs

@ -23,13 +23,9 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -23,13 +23,9 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
openFileDialog.CheckPathExists = true;
if (openFileDialog.ShowDialog() ?? false)
{
try {
classBrowser.AssemblyList.Assemblies.Add(ClassBrowserPad.CreateAssemblyModelFromFile(openFileDialog.FileName));
} catch (BadImageFormatException) {
SD.MessageService.ShowWarningFormatted("{0} is not a valid .NET assembly.", Path.GetFileName(openFileDialog.FileName));
} catch (FileNotFoundException) {
SD.MessageService.ShowWarningFormatted("{0} is not accessible or doesn't exist anymore.", openFileDialog.FileName);
}
IAssemblyModel assemblyModel = ClassBrowserPad.CreateAssemblyModelFromFile(openFileDialog.FileName);
if (assemblyModel != null)
classBrowser.AssemblyList.Assemblies.Add(assemblyModel);
}
}
}
@ -48,13 +44,9 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -48,13 +44,9 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
if (gacDialog.ShowDialog() ?? false)
{
foreach (string assemblyFile in gacDialog.SelectedFileNames) {
try {
classBrowser.AssemblyList.Assemblies.Add(ClassBrowserPad.CreateAssemblyModelFromFile(assemblyFile));
} catch (BadImageFormatException) {
SD.MessageService.ShowWarningFormatted("{0} is not a valid .NET assembly.", Path.GetFileName(assemblyFile));
} catch (FileNotFoundException) {
SD.MessageService.ShowWarningFormatted("{0} is not accessible or doesn't exist anymore.", assemblyFile);
}
IAssemblyModel assemblyModel = ClassBrowserPad.CreateAssemblyModelFromFile(assemblyFile);
if (assemblyModel != null)
classBrowser.AssemblyList.Assemblies.Add(assemblyModel);
}
}
}

Loading…
Cancel
Save