使用AutoMapper for Silverlight映射到内部类型

时间:2012-07-09 19:35:59

标签: automapper

如何配置我的应用程序,以便AutoMapper可以映射到Silverlight 5中的内部类型和/或属性?例如,我有以下类型:

internal class SomeInfo
{
    public String Value { get; set; }
}

我尝试使用此类型作为目标调用Mapper.DynamicMap,并在运行时收到以下错误:

  

尝试安全透明方法   'DynamicClass.SetValue(System.Object,System.Object)'进行访问   安全关键类型'Acme.SomeInfo'失败。

我首先尝试实例化该类,然后将实例传递给DynamicMap,并将类范围更改为public,并为该属性设置内部setter。我还使用[SecuritySafeCritical]属性标记了该类。所有这些测试都会产生相同的错误消息。

我能够克服这个问题的唯一方法就是用公共范围和公共制定者完全暴露这个类。当然,这是一个问题,因为我正在开发一个将被其他开发人员使用的类库,并且使用“内部”范围是一种有意识的策略来隐藏实现细节以及确保代码仅按预期使用(遵循没有来自DDD和CQRS的公共设定者概念。

那就是说,我该怎样做才能使AutoMapper能够处理内部类型和/或属性?

(注意:类库是为SL5构建的,用于客户端应用程序,配置为使用提升信任的浏览器运行。)

1 个答案:

答案 0 :(得分:1)

这更像是一个Silverlight限制 - 它不允许从外部程序集反映私有/受保护/内部成员,请参阅:

http://msdn.microsoft.com/en-us/library/stfy7tfc(VS.95).aspx

简单地说 - AutoMapper无法访问程序集的内部成员。