我正在从AD / LDAP导入数据,并且在byte[]
对象中以ResultPropertyValueCollection
返回二进制属性时遇到一些问题。
最简单的例子是objectGUID属性。我需要在适当的GUID对象中,而不是byte[]
。我可以很容易地说new Guid(myByteArray)
,但是如果有其他二进制字段(我猜图像等)不 GUID,那么这似乎很笨拙。
是否有任何干净整洁的方法从byte[]
获取非序列化类型而不仅仅是尝试从中创建不同的对象?或者更好:我可以让LDAP / AD告诉我它是什么类型的对象吗?我喜欢这个,因为我想要一个可以处理所有属性的通用导入,并将它们正确地映射到我自己的系统中。
......这可能是一种边缘情况,但如果可以通用的方式做到这一点,那将是完美的。如果没有,我可能只是暂时试着抓住new Guid(myByteArray)
。
答案 0 :(得分:3)
您应该检查字节数组是否正好是16个字节。除此之外,GUID显然只是一个16字节的数组,因此您无法针对任何其他指标对其进行验证。
至于意外地反序列化另一个数据类型字节数组,遗憾的是,这些信息通常不与序列化字节数组一起存储。调用者应该已经知道字节数组是什么,并自己进行转换。
答案 1 :(得分:0)
您可以使用我现在在LDAP / AD环境中执行此操作的一行代码来执行此操作
var sObjectGUID = entry.NativeGuid.ToString();
记住,我正在做更多的代码,但基本上我的业务代码中有一个方法,我不能在这里分享,但我正在根据SamAccount是否存在进行检查。
public static string SamExist( string domain, string userid)
{
}