Динамическое использование typeof - PullRequest
0 голосов
/ 10 марта 2009

Я использую отражение, чтобы получить свойства объекта, и в этом нет никаких трудностей, но мне нужно сделать свой класс еще более универсальным, поэтому в основном я пытаюсь сделать следующее:

PropertyInfo[] properties = (typeof ("ObjectName")).GetProperties(BindingFlags.Public | BindingFlags.Instance);

Или что-то подобное. Обратите внимание на использование строки внутри typeof. Я знаю, что это не работает, это просто чтобы показать, чего я пытаюсь достичь. Я также попробовал:

public void Test(object myObject)  
{  
    typeof(myObject.GetType());  

    Type myType = myObject.GetType();
    typeof(myType);
}  

безуспешно.

Ответы [ 3 ]

3 голосов
/ 10 марта 2009

Звучит так, как вы хотите Type.GetType или Assembly.GetType. Одно предостережение с первым - если тип не находится в вызывающей сборке или mscorlib, вам нужно дать имя сборки, а также имя типа - см. этот вопрос более раннего сегодня для примера.

В качестве альтернативы, в вашем примере кода у вас есть myObject.GetType() - разве это не делает все, что вы хотите? Непонятно точно что вы пытаетесь достичь здесь.

1 голос
/ 10 марта 2009

Если вы просто хотите получить Type объекта, о котором идет речь, используйте метод object.GetType(), например:

Type myType = myObject.GetType();

PropertyInfo[] properties = myType.GetProperties(
    BindingFlags.Public | BindingFlags.Instance);

Это предполагает, что у вас уже есть экземпляр типа, но вы не знаете, каким будет тип во время компиляции или что это может быть любой тип.

0 голосов
/ 10 марта 2009

Требуется статический метод Type.GetType . Например:

Type t=Type.GetType("System.String");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...