我正在对 Medium Trust 中的 Linq 查询进行自定义预测,并且我收到MethodAccessException
或TypeAccessException
抱怨反射和安全权利。
我已将代码简化为以下内容:
var anon1 = new { Name = "Bill Gates" };
var ctor = anon1.GetType().GetConstructors().First();
// With native Reflection it works
var anon2 = ctor.Invoke(new object[] { "Steve Ballmer" });
var expr = Expression.New(ctor, Expression.Constant("Scott Guthrie"));
var lamb = Expression.Lambda(expr); // This throws in Medium Trust
var anon3 = lamb.Compile().DynamicInvoke();
anon1.ToString(); // --> { Name = Bill Gates }
anon2.ToString(); // --> { Name = Steve Ballmer }
anon3.ToString(); // --> { Name = Scott Guthrie }
完全信任,anon2
并将anon3
被创建。仅在中等信任anon2
中创建。
另一个类似的情况没有解决问题