Вопрос по reflection, c# – C # Reflection: Как получить ссылку на класс из строки?
Type.GetType Вы можете получить информацию о типе. Вы можете использовать этот класс дляполучить метод информация, а затемвзывать метод (для статических методов оставьте первый параметр пустым).
Вам также может понадобитьсяНазвание сборки правильно определить тип.
If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace.
Type.GetType
метод.
Вот очень простой пример:
using System;
using System.Reflection;
class Program
{
static void Main()
{
Type t = Type.GetType("Foo");
MethodInfo method
= t.GetMethod("Bar", BindingFlags.Static | BindingFlags.Public);
method.Invoke(null, null);
}
}
class Foo
{
public static void Bar()
{
Console.WriteLine("Bar");
}
}
Я говорюsimple потому что таким способом очень легко найти тип, который является внутренним для той же сборки. Посмотри пожалуйстаОтвет Джона для более подробного объяснения того, что вам нужно знать об этом. Как только вы получили тип, мой пример показывает вам, как вызвать метод.
Type.GetType(string)
, но вам нужно знатьfull имя класса, включая пространство имен, и, если оно отсутствует в текущей сборке или mscorlib, вам вместо этого понадобится имя сборки. (В идеале, использоватьAssembly.GetType(typeName)
вместо этого - я считаю, что проще с точки зрения правильной ссылки на сборку!)
Например:
// "I know String is in the same assembly as Int32..."
Type stringType = typeof(int).Assembly.GetType("System.String");
// "It's in the current assembly"
Type myType = Type.GetType("MyNamespace.MyType");
// "It's in System.Windows.Forms.dll..."
Type formType = Type.GetType ("System.Windows.Forms.Form, " +
"System.Windows.Forms, Version=2.0.0.0, Culture=neutral, " +
"PublicKeyToken=b77a5c561934e089");