Методы вызова расширения по классам требуют разрешения на контроль
-
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.
Я предполагаю, что вы называете этими методами в «нормальном» сценарии, а не через лямбда выражения выражения выражения выражения деревьев? Это введет дополнительные осложнения.