Методы вызова расширения по классам требуют разрешения на контроль

StackOverflow https://stackoverflow.com/questions/2174464

  •  24-09-2019
  •  | 
  •  

Вопрос

Я работал над пониманием безопасности кода, и я надеялся, что кто-то может сможет объяснить мне это поведение и почему он требует дополнительных разрешений. Скажем, у меня есть два метода расширения

   public static string dib(this string source)
   { 
     return souce.dob();
   }

   public static string dob(this string source)
   {
     return source+"dob":
   }

Если эти два метода появляются в одном классе, они не требуют специальных разрешений CAS. Однако, как только я перемещу DOB в другой класс, мне требуется System.security.Permissions.securityprision с флагом контроля. Существует ли некоторый Restriciton при вызове методов расширения из методов расширения между классами? Есть ли обходной путь, кроме слияния всех расширений в огромный один класс?

«Отредактировать:« '», как оказывается, фактическая проблема не была методом расширения. Был конструктор, который использовал Regex в одном из классов. Regexes, наряду с другими функциями, которые скомпилированы во время выполнения, требуют контрольной проверки. Спасибо за вашу помощь, этот материал CAS очень сложно.

Это было полезно?

Решение

Я не могу воспроизвести проблему, отрицающую SecurityPermission ControlVidence для либо вызывающего абонента, либо Callee или для обоих. Какая версия .NET Framework вы работаете? Кроме того, чтобы помочь с попытками REPRO, не могли бы вы указать, какие из соответствующих собраний отсутствуют разрешения SecurityPermission Controundired?

Другие советы

Это кажется очень странным для меня. Я откровенно не очень хорошо осведомлен о проблемах CAS, но я был бы очень удивлен, если бы это было искренне проблемой метода расширения.

Если вы вызываете методы расширения, используя синтаксис метода без расширения (т.е. TypeName.Method(args)) это работает? Если нет, и вы делаете их методы не расширения, делает это работай? Если вы столкнулись с такой же проблемой в обоих случаях, то ясно, что это не проблема расширения метода - что, по крайней мере, поможет вам в исследовании проблемы. если ты нет Забегайте в ту же проблему, пожалуйста, дайте детали того, что работает ... Только отличается от деклараций метода расширения, должны быть дополнительными атрибутами, и я не вижу, как это повлияет на CAS.

Я предполагаю, что вы называете этими методами в «нормальном» сценарии, а не через лямбда выражения выражения выражения выражения деревьев? Это введет дополнительные осложнения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top