我已经使用大整数/间隔类型的新属性扩展了我们的架构,以用作日期。这里有问题。一种是在ADUC
中,属性显示为数字,而系统中其他日期(具有相同的基础类型)显示为日期。实际上,这似乎可以,因为它是整数。也许ADUC
预先设置了一些强制显示为日期的属性?
另一个是我无法使用System.DirectoryServices.Accountmanagment
以正确的方式处理此问题。我有一个扩展UserPrincipal
的类,它很好用,但是添加此新属性将不起作用。当我尝试传递日期以及传递较长时间时,都会失败。
我不确定在AD
模式过程中做错了什么,尽管我不确定这可能是什么。我曾尝试使用Google搜索,但到目前为止,我在任何文章中都没有发现任何类似的问题。
我非常害怕做一些会弄乱我的AD
的事情,因此我想在此询问一些有关此的提示,尤其是日期。
编辑:
我进行了更多测试,并为AccountManagment.UserPrincipal扩展提供了解决方案。尽管“感到”奇怪:
public DateTime? MyCustomDate
{
get
{
object[] result = this.ExtensionGet("my-custom-date");
if (result != null && result.Length > 0)
{
if (result[0].GetType() == typeof(string))
{
long l = 0;
return (long.TryParse(result[0].ToString(), out l) ? DateTime.FromFileTimeUtc(l) : (DateTime?)null);
}
else
{
ActiveDs.IADsLargeInteger li = (ActiveDs.IADsLargeInteger)result[0];
return DateTime.FromFileTimeUtc(((long)li.HighPart << 32) + li.LowPart).ToLocalTime();
}
}
else
return null;
}
set
{
if (value != null)
ExtensionSet("my-custom-date", ((DateTime)value).ToFileTimeUtc().ToString());
else
ExtensionSet("my-custom-date", null);
}
}
我尝试了不同的方法,但似乎只有ToString()方法有效。
所以我基本上可以正常工作了。此外,我尝试通过扩展accountExires的allready内置属性来进行此操作。我得到的行为完全相同,因此我相信我在AD中的属性是正确创建的。
编辑#2: 当属性值位于内存中时,如果属性值已由设置程序自行更改,则在属性的getter部分中进行类型检查。该值不再是com类型,而是字符串(很明显)
答案 0 :(得分:0)
由于我今天已经在做更多的工作,看来我在编辑中的解决方案确实起作用。
公共DateTime? MyCustomDate { 得到 {
<button id="links">text content</button>