在Silverlight 4应用程序中,我试图使用以下代码实例化一个类型在运行时才知道的对象:
Assembly assembly = Assembly.LoadFrom("Name.Of.Some.dll");
Type type = assembly.GetType("Full.NameSpace.And.ClassName");
object o = Activator.CreateInstance(type);
但是,Assembly.LoadFrom()调用会导致异常:
{System.MethodAccessException: Attempt by security transparent method 'Mosaic.Layers.LayerParamChangeHandlerInfo.CreateParamHandler()' to access security critical method 'System.Reflection.Assembly.LoadFrom(System.String)' failed.
我已经做了一些谷歌搜索错误,但我仍然无法弄清楚为什么我得到了异常(我认为,与强烈签署的程序集相关的东西),更重要的是,如何解决问题并创建我的对象。
答案 0 :(得分:2)
不允许您从自己的代码中调用此方法,导致其安全性至关重要,并且仅限于在.NET Framework内部使用。
请勿在您的应用程序中使用此成员。如果这样做,您的代码将抛出MethodAccessException。该成员是安全关键的,它限制它由.NET Framework for Silverlight类库内部使用。
Silverlight中唯一可用的程序集Load方法是Assembly.Load(string)。如果要动态加载程序集,请查看this方法。