Сканирование кода для определенных типов - PullRequest
1 голос
/ 25 октября 2011

Для механизма перевода мне нужно вернуть все объекты определенного типа (метки, формы, пользовательский элемент управления, ...), используемые в нашем приложении. Я пытался использовать отражение, но проблема в том, что я также динамически создаю экземпляр некоторого переводимого объекта, и я не уверен, смогу ли я получить это с помощью отражения.

Может быть, отражение - не верный способ справиться с этим?

Любые предложения приветствуются.

Спасибо

1 Ответ

1 голос
/ 25 октября 2011

Попробуйте что-то похожее на этот полный пример:

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);
}
...