从Byte []中查找未序列化的类型

时间:2012-08-13 14:37:16

标签: c# .net active-directory

我正在从AD / LDAP导入数据,并且在byte[]对象中以ResultPropertyValueCollection返回二进制属性时遇到一些问题。

最简单的例子是objectGUID属性。我需要在适当的GUID对象中,而不是byte[]。我可以很容易地说new Guid(myByteArray),但是如果有其他二进制字段(我猜图像等) GUID,那么这似乎很笨拙。

是否有任何干净整洁的方法从byte[]获取非序列化类型而不仅仅是尝试从中创建不同的对象?或者更好:我可以让LDAP / AD告诉我它是什么类型的对象吗?我喜欢这个,因为我想要一个可以处理所有属性的通用导入,并将它们正确地映射到我自己的系统中。

......这可能是一种边缘情况,但如果可以通用的方式做到这一点,那将是完美的。如果没有,我可能只是暂时试着抓住new Guid(myByteArray)

2 个答案:

答案 0 :(得分:3)

您应该检查字节数组是否正好是16个字节。除此之外,GUID显然只是一个16字节的数组,因此您无法针对任何其他指标对其进行验证。

至于意外地反序列化另一个数据类型字节数组,遗憾的是,这些信息通常不与序列化字节数组一起存储。调用者应该已经知道字节数组是什么,并自己进行转换。

答案 1 :(得分:0)

您可以使用我现在在LDAP / AD环境中执行此操作的一行代码来执行此操作

var sObjectGUID = entry.NativeGuid.ToString();
记住,我正在做更多的代码,但基本上我的业务代码中有一个方法,我不能在这里分享,但我正在根据SamAccount是否存在进行检查。

public static string SamExist( string domain, string userid)
{
}