以下代码在最后一次分配时失败:
static void Main(string[] args)
{
int a = 5;
object b = 5;
System.Diagnostics.Debug.Assert( a is int && b is int );
double x = (double)a;
double y = (double)b;
}
Run Code Online (Sandbox Code Playgroud)
如果a和b都是int,那么这个错误的原因是什么?
与以下MSDN主题中的问题类似:http://social.msdn.microsoft.com/Forums/en-MY/csharplanguage/thread/4c9fea6c-1d0a-4733-a8ac-e3b78d10e999
我正在尝试验证给定用户是否是组的成员,而我们现有的功能解决方案太慢(13-16秒),我正在尝试加快速度.我目前有:
public bool IsMemberAD(string userName, string groupName)
{
var pc = new System.DirectoryServices.AccountManagement.PrincipalContext(System.DirectoryServices.AccountManagement.ContextType.Domain);
var user = System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(pc, System.DirectoryServices.AccountManagement.IdentityType.SamAccountName,
userName.ToLower());
var group = System.DirectoryServices.AccountManagement.GroupPrincipal.FindByIdentity(pc, groupName);
if (group == null || user == null) return false;
return user.IsMemberOf(group);
}
Run Code Online (Sandbox Code Playgroud)
使其有趣的是,它仅在用户不在组中时才返回错误,而是在目标组内的组成员中返回错误.
例如:
Steve和Sam是两个用户,GroupParent和GroupChild是两个用户.Steve和GroupChild是GroupParent的成员.Sam是GroupChild的成员.如果我在(Steve,GroupParent)上调用此函数,则返回true.如果我打电话给它(Sam,GroupParent),我会收到一个错误.如果我打电话给它("fdkjskghkf",GroupParent)它返回false.
我将上面的一篇文章与类似问题联系起来,但他的解决方案对我没有用,我仍然遇到同样的错误.想法?