小编Tan*_*lax的帖子

当父类也实现IDisposable时,在子类上实现IDisposable

我有一个父和子类都需要实现IDisposable.应该把virtual(和base.Dispose()?)电话放在哪里?当我只是覆盖Dispose(bool disposing)调用时,我觉得很奇怪,我IDisposable没有显式Dispose()函数(仅使用继承的函数)实现,但是还有其他所有功能.

我一直在做什么(微不足道):

internal class FooBase : IDisposable
{
    Socket baseSocket;

    private void SendNormalShutdown() { }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    private bool _disposed = false;
    protected virtual void Dispose(bool disposing)
    {
        if (!_disposed)
        {
            if (disposing)
            {
                SendNormalShutdown();
            }
            baseSocket.Close();
        }
    }

    ~FooBase()
    {
        Dispose(false);
    }
}

internal class Foo : FooBase, IDisposable
{
    Socket extraSocket;

    private bool _disposed = false;
    protected override void Dispose(bool …
Run Code Online (Sandbox Code Playgroud)

.net c# inheritance idisposable

25
推荐指数
3
解决办法
2万
查看次数

通过.NET的电子邮件地址搜索AD用户的正确方法

我遇到了一些代码问题,这些代码旨在通过搜索他们的电子邮件地址来查找Active Directory中的用户.我尝试了2种方法,但有时我发现FindOne()方法在某些情况下不会返回任何结果.如果我在Outlook中的GAL中查找用户,我会看到列出的SMTP电子邮件地址.

我的最终目标是确认用户是否存在于AD中.我只有电子邮件地址作为搜索条件,因此无法使用名字或姓氏.

方法1:使用邮件属性:

DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(mail=" + email + ")";
search.PropertiesToLoad.Add("mail");
SearchResult result = search.FindOne();
Run Code Online (Sandbox Code Playgroud)

方法2:proxyAddresses属性:

DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(proxyAddresses=SMTP:" + email + ")"; // I've also tried with =smtp:
search.PropertiesToLoad.Add("mail");
SearchResult result = search.FindOne();
Run Code Online (Sandbox Code Playgroud)

我已经尝试更改电子邮件地址输入的大小写,但它仍然没有返回结果.这里是否存在区分大小写的问题?如果是这样,解决它的最佳方法是什么?

.net c# search active-directory

12
推荐指数
2
解决办法
2万
查看次数

使用块是否为GC创建和维护引用?

这主要是为了好奇,因为有我能想到的实现几乎所有用例的更好的方式为这个结构(在C#和其他语言我经常使用,至少),但我最近看到在这里一个范围的互斥这是一个很酷的概念.

我的问题是,using语句是否维护一个引用(即:阻止GC运行)到它所作用的对象?

例如,如果我这样做:

using (new ScopedMutex())
{
// ...
}
Run Code Online (Sandbox Code Playgroud)

ScopedMutex对象是否会在使用块结束时保持其存在,或者GC可以在块中运行并处理它吗?

c# garbage-collection using using-statement

2
推荐指数
1
解决办法
150
查看次数