using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace Engine.Asm
{
///
/// Class ini digunakan untuk melakukan penjelajahan ke
/// dalam dll
///
public class AssemblyExplorer
{
private string path;
private List
protected Assembly asm;
protected Type[] arrType;
public string getName()
{
return asm.ManifestModule.Name;
}
///
/// Buat instant baru dari class AssemblyExplorer
///
/// path lokasi dll yang akan diload
public AssemblyExplorer(string path)
{
try
{
this.path = path;
asm = Assembly.LoadFile(path);
////System.Windows.Forms.MessageBox.Show(asm.ManifestModule.Name);
arrType = asm.GetTypes();
lstBaseName = new List
foreach (Type t in arrType)
{
if (!lstBaseName.Contains(t.BaseType.Name))
lstBaseName.Add(t.BaseType.Name);
}
}
catch (ReflectionTypeLoadException e)
{
System.Windows.Forms.MessageBox.Show(e.Message,e.GetType().Name);
}
catch (BadImageFormatException e)
{
System.Windows.Forms.MessageBox.Show(e.Message, e.GetType().Name);
}
catch (NullReferenceException e)
{
System.Windows.Forms.MessageBox.Show(e.Message, e.GetType().Name);
}
}
///
/// Ambil daftar kelas induk dari semua kelas
/// yang terdapat pada dll ini
///
///
public List
{
return lstBaseName;
}
///
/// Cek, apakah suatu dll memiliki kelas
/// yang memiliki suatu kelas induk
///
/// nama kelas induk
///
/// memiliki
public bool containtBaseClass(string baseClass)
{
if (lstBaseName == null)
return false;
foreach (string s in lstBaseName)
{
if (s.Trim().Equals(baseClass))
return true;
}
return false;
}
///
/// Ambil suatu class berdasar nama
///
/// nama kelas yang dicari
///
/// atau mengembalikan kelas
/// bila ditemukan
public Type getClass(string ClassName)
{
if (arrType == null)
return null;
foreach (Type t in arrType)
{
if (t.Name.Equals(ClassName))
return t;
}
return null;
}
~AssemblyExplorer()
{
path = null;
asm = null;
lstBaseName = null;
arrType = null;
}
}
}
Tuesday, November 11, 2008
Assembly Explorer
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment