Castle Windsor InternalsVisibleTo Silverlight

Я использую Castle Windsor для SL v2.5.1.0. У меня есть внутренние прокси-классы (интерфейсы, конечно, общедоступные, но реализация является внутренней, так что потребитель знает только об интерфейсе).

Я использую следующие атрибуты в моей сборке с внутренними классами

[assembly: InternalsVisibleTo("Castle.Core, PublicKey=002400000480000094000000060200000024000052534131000400000100010077F5E87030DADCCCE6902C6ADAB7A987BD69CB5819991531F560785EACFC89B6FCDDF6BB2A00743A7194E454C0273447FC6EEC36474BA8E5A3823147D214298E4F9A631B1AFEE1A51FFEAE4672D498F14B000E3D321453CDD8AC064DE7E1CF4D222B7E81F54D4FD46725370D702A05B48738CC29D09228F1AA722AE1A9CA02FB")]
[assembly: InternalsVisibleTo("Castle.Windsor, PublicKey=002400000480000094000000060200000024000052534131000400000100010077F5E87030DADCCCE6902C6ADAB7A987BD69CB5819991531F560785EACFC89B6FCDDF6BB2A00743A7194E454C0273447FC6EEC36474BA8E5A3823147D214298E4F9A631B1AFEE1A51FFEAE4672D498F14B000E3D321453CDD8AC064DE7E1CF4D222B7E81F54D4FD46725370D702A05B48738CC29D09228F1AA722AE1A9CA02FB")]
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]

В полном режиме .NET 4.0 со сборками .NET 4.0 Castle это работает нормально, и мои типы проксируются нормально. В Silverlight со сборками Silverlight Castle я получаю:

Type ConsoleApplication4.MyTypeToBeProxied is not public. Can not create proxy for types that are not accessible.

Кроме того, просто при устранении проблемы добавление следующего, похоже, не имеет значения ...:

[assembly: InternalsVisibleTo("System.Core, PublicKey=00000000000000000400000000000000")]
[assembly: InternalsVisibleTo("System.Core, PublicKey=" +
"00240000048000009400000006020000002400005253413100040000010001008d56c76f9e8649" +
"383049f383c44be0ec204181822a6c31cf5eb7ef486944d032188ea1d3920763712ccb12d75fb7" +
"7e9811149e6148e5d32fbaab37611c1878ddc19e20ef135d0cb2cff2bfec3d115810c3d9069638" +
"fe4be215dbf795861920e5ab6f7db2e2ceef136ac23d5dd2bf031700aec232f6c6b1c785b4305c" +
"123b37ab")]

, и я также проверил во время выполнения, что имя динамически размещенная сборка в SL по-прежнему остается DynamicProxyGenAssembly2.

Есть идеи? Спасибо.

ИЗМЕНИТЬ :

Я нашел проблему, я думаю:

Castle для .NET 4.0 имеет:

private bool IsAccessible(Type target)
{
  //      ....
  return ((target.IsPublic || target.IsNestedPublic) || internalAndVisibleToDynProxy);

}

в DefaultProxyBuilder ... и SL 4 имеет

private bool IsAccessible(Type target)
{
    target.IsNested();
    return (target.IsPublic || target.IsNestedPublic);
}

Это что-то, что можно исправить в исходном коде Castle? Или мне нужно / следует подклассифицировать DefaultProxyFactory?

7
задан Jeff 11 November 2010 в 16:58
поделиться