C# 与C中的Assembly.GetExecutionGassembly().GetTypes()相关的问题

C# 与C中的Assembly.GetExecutionGassembly().GetTypes()相关的问题,c#,asp.net,vb.net,C#,Asp.net,Vb.net,在我的网站上。我在App_代码中添加了一个类文件,在一个名称空间中包含5个公共类 我想获取包含在特定名称空间中的所有类名 在default.aspx.cs文件中,我添加了 var q = from t in Assembly.GetExecutingAssembly().GetTypes() where t.IsClass && t.Namespace == "Sample" q.ToList().For

在我的网站上。我在App_代码中添加了一个类文件,在一个名称空间中包含5个公共类

我想获取包含在特定名称空间中的所有类名

在default.aspx.cs文件中,我添加了

var q = from t in Assembly.GetExecutingAssembly().GetTypes()
                            where t.IsClass && t.Namespace == "Sample"
q.ToList().ForEach(t => Console.WriteLine(t.Name));
但我在Assembly.GetExecutionGassembly.GetTypes中找不到示例命名空间 如何访问上述代码中的“示例”名称PCE

谢谢

在default.aspx.cs文件中,我添加了

这就是问题所在。当您拥有一个与web应用程序不同的网站时,您放入App_代码中的所有代码都会在运行时在单独的程序集中动态编译。因此,当您编写Assembly.GetExecutionGassembly时,您基本上得到的是为default.aspx WebForm生成的程序集,该程序集不同于App_代码中包含代码的程序集。可以遍历项目中所有引用的程序集以查找类型

要获取此程序集列表,可以在当前应用程序域上使用该方法

另一种可能是使用App_Code文件夹中包含的已知类型来获取其程序集:

var assembly = typeof(Some_Type_That_Is_Declared_In_App_Code).Assembly;
var q = 
    from t in assembly.GetTypes()
    where t.IsClass && t.Namespace == "Sample"
    select t;
我认为这里的问题可能是由于以下事实:此代码是在从codebehind文件创建的临时程序集中执行的

要检查此项,请执行以下操作:

尝试转储程序集中可用的名称空间和类-例如。 var q=来自Assembly.GetExecutionGassembly.GetTypes中的t t.IsClass在哪里 选择t; q、 ToList.ForEacht=>Console.WriteLinet.Namespace;

尝试使用已知程序集而不是正在执行的程序集,例如typeofSample.Class1.assembly
或者。。。只需阅读@Darin的答案。。。我必须学会打字更快

Sample是整个名称空间吗?另外,您在页面中查找的类型有哪些?asp.net中的页面通常根据需要在不同的程序集中进行编译…感谢您的回复..但是如何从Default.aspx.cs文件中的示例命名空间中获取所有类名???@ghanshyam.mirani,您可以使用AppDomain.CurrentDomain.GetAssembly获取项目中引用的所有程序集,然后为每个程序集执行代码以查找给定类型。另一种可能是使用App_代码中的某个已知类型来获取其程序集。