Я знаю, что сборка .NET является самоописательной из-за метаданных.Теперь предположим, что у меня есть сборка черного ящика, о которой я ничего не знаю.Могу ли я узнать типы, содержащиеся в нем, использовать их методы и передавать аргументы?Как?Фрагменты кода Sampe будут высоко оценены.
[New Edit1]
Я не работаю во время разработки.Я пытаюсь выяснить, сколько аргументов нужно методу типа и каков тип этих аргументов, поэтому я могу вызвать метод во время выполнения, используя отражение.
[New Edit2]
Я пришелсо следующими фрагментами кода.Он строит объект из сборки черного ящика.Но это выглядит довольно некрасиво, есть идея получше?
foreach (ConstructorInfo ci in cis)
{
Console.WriteLine("{0}:{1}", ci.MemberType, ci.Name);
Console.WriteLine("ReflectedType:{0}", ci.ReflectedType);
ParameterInfo[] parameters = ci.GetParameters();
Object[] arguments = new Object[parameters.Length];
Console.WriteLine(parameters.Length);
for (int i = 0; i < parameters.Length;i++ )
{
ParameterInfo para = parameters[i];
if (para.ParameterType == typeof(Int32))
{
Console.WriteLine("please input a Int32");
String input = Console.ReadLine();
Int32 para_int32 = Int32.Parse(input);
arguments[i] = para_int32;
}
if (para.ParameterType == typeof(String))
{
Console.WriteLine("please input a String");
String para_String = Console.ReadLine();
arguments[i] = para_String;
}
//Add all the guesses...
}
Object o = ci.Invoke(arguments);
Большое спасибо.