For a .NET assembly to allow anything other than fully trusted callers the assembly must be signed and attributed with AllowPartiallyTrustedCallers.
But even with this in place the CLR still (fortunately) checks code rights to ensure that the partially trusted caller can execute the desired code.
So my question is, why is the AllowPartiallyTrustedCallers attribute not assumed for all assemblies? Why not have the opposite where those who really don't want partially trusted callers have to use some attribute like DenyPartiallyTrustedCallers?