2
我试图从仅在运行时已知的程序集中创建类。有奇怪的问题。在铸造通过反射创建的类时遇到问题
string providerType = AppConfig.GetConfigValue("LocationProvider");
string assemblyFileName = AppConfig.GetConfigValue("LocationProviderAssembly");
Assembly assembly = Assembly.LoadFrom(assemblyFileName);
//Object obj = assembly.CreateInstance(providerType) ;
Type type = assembly.GetType(providerType);
Object obj = Activator.CreateInstance(type);
ILocationProvider locProvider = obj as ILocationProvider;
float distance = locProvider.GetDistance(new Location(), new Location());
如果我使用调试器,并停止最后两行被执行之前,我可以运行在即时窗口,这两条线,和他们的工作。但是如果我让代码运行,locProvider仍然为空。
OBJ似乎有正确的类型:
obj.GetType()
{Name = "LocationProviderConcrete" FullName = "LocationProvider.LocationProviderConcrete"}
[System.RuntimeType]: {Name = "LocationProviderConcrete" FullName = "LocationProvider.LocationProviderConcrete"}
base {System.Reflection.MemberInfo}: {Name = "LocationProviderConcrete" FullName = "LocationProvider.LocationProviderConcrete"}
这工作正常立即窗口:
((ILocationProvider) obj).GetDistance(new Location(), new Location())
任何线索,为什么这不正常码流工作?
就是这样。谢谢,乔恩! – 2012-02-24 06:38:39