1
我想使用反射與動態結合。 可以說我有下面的調用動態和反射
dynamic foo = External_COM_Api_Call()
訪問,我接收使用COM對象。現在
我想要做的財產以後這樣的:
String bar = foo.GetType().GetProperty("FooBar").GetValue(foo,null)
但我不斷收到對的PropertyInfo空。
想法?
我想使用反射與動態結合。 可以說我有下面的調用動態和反射
dynamic foo = External_COM_Api_Call()
訪問,我接收使用COM對象。現在
我想要做的財產以後這樣的:
String bar = foo.GetType().GetProperty("FooBar").GetValue(foo,null)
但我不斷收到對的PropertyInfo空。
想法?
爲什麼使用反射時,你可以直接:
dynamic foo = External_COM_Api_Call();
string value = foo.FooBar;
這就是dynamic
關鍵字的整點。你不再需要反思。
如果你想使用反射那麼就不要使用動態:
object foo = External_COM_Api_Call();
string bar = (string)foo
.GetType()
.InvokeMember("FooBar", BindingFlags.GetProperty, null, foo, null);
這裏是一個完整的工作示例:
class Program
{
static void Main()
{
var type = Type.GetTypeFromProgID("WScript.Shell");
object instance = Activator.CreateInstance(type);
var result = (string)type
.InvokeMember("CurrentDirectory", BindingFlags.GetProperty, null, instance, null);
Console.WriteLine(result);
}
}
動態編碼。我想指定要通過(例如)配置文件 – Jaster 2010-12-22 14:15:30