在这里,我已经阅读了几个相关的问题,但我似乎仍然无法让自己的Unity配置工作起来。
这是我的配置文件。
<?xml version="1.0" encoding="utf-8"?>
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<assembly name="System.Security" />
<namespace name="System.Security.Cryptography" />
<container name="Default">
<register type="HashAlgorithm" mapTo="SHA256Managed" />
<register type="SymmetricAlgorithm" mapTo="AesCryptoServiceProvider" />
</container>
</unity>我得到的错误信息是..。
无法解析类型名称或别名AesCryptoServiceProvider。请检查您的配置文件并验证此类型名称。
HashAlgorithm通常是解析的,而不是AES提供程序。
在我的项目中引用了System.Security程序集,如果我这样做,可以解析SymmetricAlgorithm类型。
IUnityContainer Container = new UnityContainer ();
Container.RegisterType<SymmetricAlgorithm, AesCryptoServiceProvider> ();..。但是,如果可能的话,我想把配置排除在代码之外。
有人能帮我解决这个问题吗?
发布于 2015-05-27 11:23:39
问题是AesCryptoServiceProvider不在System.Security中。您将在System.Core程序集中找到它。
因此,您需要修复您的统一配置,以便还包括该程序集,如下所示:
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<namespace name="System.Security.Cryptography" />
<assembly name="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<container name="Default">
<register type="HashAlgorithm" mapTo="SHA256Managed" />
<register type="SymmetricAlgorithm" mapTo="AesCryptoServiceProvider" />
</container>
</unity>注意:您需要提供程序集的全名(带有版本、区域性和令牌)。这是因为团结将名称空间和程序集名称与类型名称连接起来,然后它将检查结果类型是否存在(检查这里的文件。当使用名称加载类型时,大多数情况下您将需要完全限定的名称,例如,请参阅Type.GetType中关于类型名称的注释
要获取的类型的程序集限定名称。见AssemblyQualifiedName。如果类型位于当前正在执行的程序集中或Mscorlib.dll中,则只需提供按其命名空间限定的类型名称即可。
https://stackoverflow.com/questions/30461486
复制相似问题