C# 调用 ADUser Constructors

2020-12-02 21:45:51 +08:00
 badacook
大家好,这里请教大家一个问题
一个任务中,使用 C#定义一个方法,输入一个字符串,相当于用户名
返回一个对象,要求该对象具备 ADUser 常用的属性,能否不用自定义 class
此处可能涉及 C#调用相关 Windows API 如 ADUser Constructors
可参阅这篇文章 https://www.cnblogs.com/benwu/p/4132026.html
不知道能否实现,还望各位前辈不吝赐教,谢谢了
1773 次点击
所在节点    C#
4 条回复
forgottencoast
2020-12-03 00:15:50 +08:00
你先说你要调用那个 API,你找到了吗?文档链接呢?
badacook
2020-12-03 00:56:26 +08:00
ADUser Constructors 就这个啊,我是想在 C#中创建一个对象,具有 ADUser 常用的属性,能否不用自定类,直接加载
Assembly:Microsoft.ActiveDirectory.Management.dll ,使用 ADUser 构造函数完成,就是想问一下 这个思路是否可行
forgottencoast
2020-12-04 22:55:39 +08:00
如果你看不到源代码的话,你不知道这个类的设计是否符合你的要求,虽然属性可以使用,但是里面可能会包含一些逻辑处理,这里面可能会在你的程序中引入 bug 。
而且 ADUser 这个类的继承关系很复杂,所以正常来说肯定是不建议这样用的,不过你非要这样用也不是不可以。
况且自己自定义一个类也是非常简单的事情。
badacook
2020-12-06 10:56:58 +08:00
我已经使用 ILSpy 反编译工具,查看了 Microsoft.ActiveDirectory.Management.dll 中 class ADUser 的源码,如下:

实际应用中 我不会这样做,这样尝试 主要是练习:
C#调用 C#的非托管库及构造函数,并打印对象的属性名称和方法
但是我尝试着 C# 平台调用( P / Invoke ) 非托管库的方法,但构造函数的调用语法好像有不同
我还是没实现练习效果,不知是否可以给出该实例的示例代码,以供参考,谢谢了
其中 Microsoft.ActiveDirectory.Management.dll 已分享至网盘
链接: https://pan.baidu.com/s/1sLFBKPla6AvQ9OZc7uFQ2Q 提取码: d3eu

using Microsoft.ActiveDirectory.Management.Commands;
using System;
using System.Security.Principal;
namespace Microsoft.ActiveDirectory.Management
{
public class ADUser : ADAccount
{
public string GivenName
{
get
{
return (string)base.GetValue("GivenName");
}
set
{
base.SetValue("GivenName", value);
}
}
public string Surname
{
get
{
return (string)base.GetValue("Surname");
}
set
{
base.SetValue("Surname", value);
}
}
static ADUser()
{
ADEntity.RegisterMappingTable(typeof(ADUser), ADUserFactory<ADUser>.AttributeTable);
}
public ADUser()
{
}
public ADUser(string identity) : base(identity)
{
}
public ADUser(Guid guid) : base(guid)
{
}
public ADUser(SecurityIdentifier sid) : base(sid)
{
}
public ADUser(ADObject identity) : base(identity)
{
}
}
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/731542

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX