如何知道一个类文件中引用了哪些命名空间和相关的DLL? 类文件?.cs文件还是.dll/.exe文件? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ildasm 类文件.dll/.exe双击红色箭头:“ MANIFEST” 假如是run time的话, 可以试试用Reflection 从前我写的一个程序的片断,自己看吧!不排版啦!csdn这个编辑功能太滥!主要就是使用reflection来做。a = Assembly.LoadFrom(fsi.FullName);//if(a==null)continue;foreach(Type t in a.GetTypes()){ string ns = t.Namespace; if(ns==null)continue; TreeNode node = new TreeNode(); string ns1 = ns; AddNamespace(tree.Nodes,ref ns,ref node); int pos = t.FullName.IndexOf(ns1); string clsname = ""; if(pos>=0) { clsname = t.FullName.Substring(pos+ns1.Length+1,t.FullName.Length-ns1.Length-1); } if(node==null)return; TreeNode subnode = new TreeNode(); string btype = ""; if(t.BaseType!=null)btype = t.BaseType.Name; subnode = node.Nodes.Add(clsname+" - "+btype); foreach(ConstructorInfo ci in t.GetConstructors()) { string p = ci.ReflectedType.FullName+" "+ci.Name+"("; foreach(ParameterInfo pi in ci.GetParameters()) { p += pi.ParameterType.ToString()+" "+pi.Name+","; } if(p.Substring(p.Length-1,1)=="(") { p += ")"; } else { p = p.Substring(0,p.Length-1)+")"; } foreach(EventInfo ei in t.GetEvents()) { subnode.Nodes.Add(ei.EventHandlerType.FullName+" "+ei.MemberType.ToString()+" "+ei.Name); } foreach(FieldInfo fi in t.GetFields()) { string stype = ""; if(fi.IsAssembly)stype += "Assembly "; if(fi.IsFamily)stype += "Family "; if(fi.IsFamilyAndAssembly)stype += "FamilyAndAssembly "; if(fi.IsFamilyOrAssembly)stype += "FamilyOrAssembly "; if(fi.IsPrivate)stype += "Private "; if(fi.IsPublic)stype += "Public "; subnode.Nodes.Add(stype+fi.FieldType.FullName+" "+fi.MemberType.ToString()+" "+fi.Name); } } } 你们误解了。我指从一个.cs文件中获取引用了哪些命名空间和相关的DLL 我上面的代码,就能取出namespace和相关的dll啊!你仔细看看 如果是在Visual Studio.net的IDE中,可以按ctrl+shift+C打开“类视图”,可以看个仔细。 datagridview显示 获取Falsh动画播放的时间 C#调用C++函数问题 C# 在canvas中显示文字问题 asp。net 做的网站 在客户端想直接访问服务器的数据库怎样做呢? 请教控件拖动的问题 删除xml文件内容 SQLite多表查询关键字 C#写的winform程序窗口失去焦点时用mouse_event模拟鼠标单击失效 WindowsForm(C#)中的datagrid问题! C#中调用C++ DLL,怎样将窗口句柄传到DLL中
双击红色箭头:“ MANIFEST”
//if(a==null)continue;
foreach(Type t in a.GetTypes())
{
string ns = t.Namespace;
if(ns==null)continue;
TreeNode node = new TreeNode();
string ns1 = ns;
AddNamespace(tree.Nodes,ref ns,ref node);
int pos = t.FullName.IndexOf(ns1);
string clsname = "";
if(pos>=0)
{
clsname = t.FullName.Substring(pos+ns1.Length+1,t.FullName.Length-ns1.Length-1);
}
if(node==null)return;
TreeNode subnode = new TreeNode();
string btype = "";
if(t.BaseType!=null)btype = t.BaseType.Name;
subnode = node.Nodes.Add(clsname+" - "+btype);
foreach(ConstructorInfo ci in t.GetConstructors())
{
string p = ci.ReflectedType.FullName+" "+ci.Name+"(";
foreach(ParameterInfo pi in ci.GetParameters())
{
p += pi.ParameterType.ToString()+" "+pi.Name+",";
}
if(p.Substring(p.Length-1,1)=="(")
{
p += ")";
}
else
{
p = p.Substring(0,p.Length-1)+")";
}
foreach(EventInfo ei in t.GetEvents())
{
subnode.Nodes.Add(ei.EventHandlerType.FullName+" "+ei.MemberType.ToString()+" "+ei.Name);
}
foreach(FieldInfo fi in t.GetFields())
{
string stype = "";
if(fi.IsAssembly)stype += "Assembly ";
if(fi.IsFamily)stype += "Family ";
if(fi.IsFamilyAndAssembly)stype += "FamilyAndAssembly ";
if(fi.IsFamilyOrAssembly)stype += "FamilyOrAssembly ";
if(fi.IsPrivate)stype += "Private ";
if(fi.IsPublic)stype += "Public ";
subnode.Nodes.Add(stype+fi.FieldType.FullName+" "+fi.MemberType.ToString()+" "+fi.Name);
}
}
}