0

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

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

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

尝试通过安全透明方法“DynamicClass.SetValue(System.Object, System.Object)”访问安全关键类型“Acme.SomeInfo”失败。

我尝试先实例化类,然后将实例传递给 DynamicMap 以及使用属性的内部设置器将类范围更改为公共。我还用 [SecuritySafeCritical] 属性标记了该类。所有这些测试都导致相同的错误消息。

我能够克服这个问题的唯一方法是完全公开具有公共范围和公共设置器的类。当然,这是一个问题,因为我正在开发一个将被其他开发人员使用的类库,并且使用“内部”范围是隐藏实现细节以及确保代码仅按预期使用的深思熟虑的策略(遵循没有来自 DDD 和 CQRS 的公共二传手概念)。

也就是说,我该怎么做才能使 AutoMapper 可以使用内部类型和/或属性?

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

4

1 回答 1

1

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

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

简而言之 - AutoMapper 无法访问程序集的内部成员。

于 2012-07-09T23:26:57.673 回答