, " ". . log (). , , . NotTrace:
[AttributeUsage(AttributeTargets.Field) ]
public class NotTrace: Attribute
{
}
, :
static bool NeedTrace(FieldInfo fi)
{ return! Attribute.IsDefined(fi, typeof(NotTrace));
}
, , NotTrace:
foreach (FieldInfo fi in type.GetFields(...))
{ if (! NeedTrace(fi))
continue;
...
}
, . , .
. , , , .
1. Windows Forms. , 1.
2. : ( MenuStrip), , .
3. TreeView , ImageList, ImageList TreeView ( ImageList), , OpenFileDialog.
4. CSharp, OpenFileDialog:
// OpenFileDialog
private string selectAssemblyFile()
{
openFileDialog1.Filter = "Dll files (*.dll)|*.dll|Exe files
(*.exe)|*.exe| All files (*.*)|*.*";
openFileDialog1.Title = "Select assembly file";
return (openFileDialog1.ShowDialog() == DialogResult.OK)?
openFileDialog1.FileName: null;
}
//
private Assembly openAssembly(string path)
{
try
{
Assembly a = Assembly.LoadFrom(path);
return a;
}
catch (Exception)
{
MessageBox.Show(" !",
"!", MessageBoxButtons.OK, MessageBoxIcon.Error);
return null;
}
}
5. :
|
|
private Assembly assembly;
6. , , :
//
void addRoot(TreeNode root, Type[] types)
{
TreeNode node = null;
foreach (Type type in types)
{
node = new TreeNode();
node.Text = type.ToString();
//
if (type.IsClass)
{
node.ImageIndex = 1;
node.SelectedImageIndex = 1;
addFirstLevel(node, type);
root.Nodes.Add(node);
}
//
else if (type.IsInterface)
{
node.ImageIndex = 2;
node.SelectedImageIndex = 2;
addFirstLevel(node, type);
root.Nodes.Add(node);
}
}
}
// ,
private void addFirstLevel(TreeNode node, Type type)
{
TreeNode node1 = null;
FieldInfo[] fields = type.GetFields();
MethodInfo[] methods = type.GetMethods();
ConstructorInfo[] constructors = type.GetConstructors();
//
foreach (FieldInfo field in fields)
{
node1 = new TreeNode();
node1.Text = field.FieldType.Name + " " + field.Name;
node1.ImageIndex = 5;
node1.SelectedImageIndex = 5;
node.Nodes.Add(node1);
}
//
foreach (ConstructorInfo constructor in constructors)
{
String s = "";
ParameterInfo[] parametrs = constructor.GetParameters();
foreach (ParameterInfo parametr in parametrs)
{
s = s + parametr.ParameterType.Name + ", ";
}
s = s.Trim();
s = s.TrimEnd(',');
node1 = new TreeNode();
node1.Text = node.Text + "(" + s + ")";
node1.ImageIndex = 6;
node1.SelectedImageIndex = 6;
node.Nodes.Add(node1);
}
//
foreach (MethodInfo method in methods)
{
String s = "";
ParameterInfo[] parametrs = method.GetParameters();
foreach (ParameterInfo parametr in parametrs)
{
s = s + parametr.ParameterType.Name + ", ";
}
s = s.Trim();
s = s.TrimEnd(',');
node1 = new TreeNode();
node1.Text = method.ReturnType.Name + " " + method.Name + "("
+ s + ")";
node1.ImageIndex = 4;
node1.SelectedImageIndex = 4;
node.Nodes.Add(node1);
}
}
7. :
private void ToolStripMenuItem_Click(object sender,
EventArgs e)
{
treeView1.Nodes.Clear();
string path = selectAssemblyFile();
if (path!= null)
{
assembly = openAssembly(path);
}
if (assembly!= null)
{
TreeNode root = new TreeNode();
root.Text = assembly.GetName().Name;
root.ImageIndex = 0;
root.SelectedImageIndex = 0;
treeView1.Nodes.Add(root);
Type[] types = assembly.GetTypes();
addRoot(root, types);
}
}
8. . , , c WINDOWS\Microsoft.NET\Framework.
2.1.
2.1
, , TreeView , , . , , ListView . , ListView , .
|
|
. , .
- ;
- ;
- ;
- ;
- ( , );
- .
1. ?
2. ?
3. ?
4. ?
5. ?
6. exe dll?
3 3
ADO.NET
, ADO.NET, ADO.NET.
ADO.NET
ADO.NET (ActiveX Data Object. NET) , .NET. ADO.NET , , XML.
ADO.NET . System.Data.Common , System.Data.SqlClient, System.Data.Odbc ..
, , DbProviderFactory, , .
ADO.NET : , , (. 3.1).
3.1 ADO.NET
, , . , , , .