扫描某些类型的代码

时间:2011-10-25 08:41:40

标签: .net c#-2.0

对于翻译引擎,我需要返回我们的应用程序中使用的特定类型的所有对象(标签,表单,用户控件......)。我试图使用反射,但问题是我还动态地实例化一些可翻译的对象,我不确定我是否可以通过反射得到它。

也许反思不是解决这个问题的正确方法?

任何建议都是欢迎的。

由于

1 个答案:

答案 0 :(得分:1)

尝试类似这个完整示例的内容:

public class ClassA
{
    public static void Main()
    {
        Assembly myassembly = Assembly.GetExecutingAssembly();
        var baseType = typeof(ClassA);
        var theTypesIWant = myassembly.GetTypes().Where(t=> baseType.IsAssignableFrom(t));
    }
}

public class ClassB : ClassA
{ }

当然,您可以通过各种方式获得对程序集的引用。也许这可能会更好:

var myAssembly2 = baseType.Assembly;

如果这还不够,请告诉我。

修改

你正在使用C#2,所以Linq不可用。这是一个修改过的表格:

List<Type> theTypesIWant2 = new List<Type>();
foreach (var t in myAssembly2.GetTypes())
{
    if (baseType.IsAssignableFrom(t))
        theTypesIWant2.Add(t);
}