Code groups是构建code access security policy的砖块. 每一个policy level都包括一个可以拥有child code group的root code group. 每一个child code group都能有它们自己的child code groups. 这个行为可以扩展延伸到任意的层次上, 形成一棵树. 每一个code group都有一个membership condition可以确定是否一个给定的assembly属于它, 这个判断要基于assembly所给的证据. 只有那些membership condition与一个给定的assembly能够匹配的code groups, 它们自身和它们的child code groups能应用policy.
FirstMatchCodeGroup
=====================
允许security policy由一个code group的和第一个匹配的child code group的policy statement的联合来定义. 这个类不能被继承.
跟其他任何的code group一样, FirstMatchCodeGroup 仅在他的membership condition与一个assembly提供的evidence匹配的时候才应用policy. 如果有一个匹配, 他就按顺序测试每一个child的membership condition, 直到发现第一个匹配时停止. FirstMatchCodeGroup 的结果是root code group和第一个匹配的child code group的policy statement的联合
FirstMatchCodeGroup 的目的就是帮助application domain的宿主的编程应用来设定domain policy.
UnionCodeGroup
====================
代表着一个它的policy statement是当前codegroup的policy statement和所有它的匹配的child code groups的policy statement的组合的这么一种code group. 这个类不能被继承.
UnionCodeGroup是最常见的code group的类型. 所有匹配的child code group的policy statement(还有孩子的孩子的code groups)都与匹配的parent code group的permission set组合了起来. 从而, 如果它的membership condition匹配了, 这个code group形成了它的policy statement 与 它的所有的也与evidence匹配的child code group的policy statement 的联合.
UnionCodeGroup code groups are the code groups created by the CASPOL utility (see Code Access Security Policy Tool (Caspol.exe)) and the .NET Framework Configuration tool (see .NET Framework Configuration Tool (Mscorcfg.msc)).
UnionCodeGroup code groups是由CASPOL utility 创建的code groups. 更多信息参考下两个链接Code Access Security Policy Tool (Caspol.exe) NET Framework Configuration Tool (Mscorcfg.msc)
来源:
UnionCodeGroup
http://msdn.microsoft.com/en-us/library/system.security.policy.unioncodegroup.aspx
FirstMatchCodeGroup
http://msdn.microsoft.com/en-us/library/system.security.policy.firstmatchcodegroup.aspx