如何配置我的应用程序,以便AutoMapper可以映射到Silverlight 5中的内部类型和/或属性?例如,我有以下类型:
internal class SomeInfo
{
public String Value { get; set; }
}我尝试以此类型作为目标调用Mapper.DynamicMap,并在运行时收到以下错误:
安全透明方法'DynamicClass.SetValue(System.Object,System.Object)‘试图访问安全关键类型'Acme.SomeInfo’失败。
我已经尝试过先实例化类,然后将实例传递给DynamicMap,然后用属性的内部设置器将类作用域更改为public。我还用SecuritySafeCritical属性标记了类。所有这些测试都会产生相同的错误消息。
我能够通过这一点的唯一方法是完全公开类的公共范围和公共设置。当然,这是一个问题,因为我正在开发一个类库,其他开发人员将使用这个类库,并且使用“内部”范围是一种刻意的策略,以隐藏实现细节,并确保代码仅按预期使用(遵循DDD和CQRS的无公共设置概念)。
尽管如此,为了使AutoMapper能够处理内部类型和/或属性,我可以做什么呢?
(注意:类库是为SL5构建的,用于客户端应用程序,配置为在信任提升的情况下耗尽浏览器。)
发布于 2012-07-09 23:26:57
这更像是Silverlight的限制-它不允许来自外部程序集的私有/受保护/内部成员的反射,请参见:
http://msdn.microsoft.com/en-us/library/stfy7tfc(VS.95).aspx
简单地说- AutoMapper不能访问程序集的内部成员。
https://stackoverflow.com/questions/11401891
复制相似问题