gpt4 book ai didi

resharper - ReSharper 实时模板可以进行条件代码生成吗?

转载 作者:行者123 更新时间:2023-12-04 05:34:35 29 4
gpt4 key购买 nike

示例:我想要一个插入方法的模板。如果类被声明 sealed ,那么我想要声明的方法private .如果类不是 sealed ,那么我想要声明的方法protected virtual .

另一个例子。如果类被继承,并且父类(super class)包含方法X ,然后调用base.X();否则什么也不做。

ReSharper 中是否提供这种类型的条件处理?我想这已经接近 T4 领域,但能够在 Live Templates 中做到这一点真的很方便。

以防万一,我使用的是 R# 7。

详细场景

这两个要求都来自尝试为 IDisposable 模式编写实时模板(参见 Implementing the Disposable Pattern Correctly)。生成的代码需要根据类是基类还是子类而有所不同。可以定义两个模板,但不难想象其他有用的场景。这是我的 IDisposable 模板中的代码:

#region IDisposable Pattern
/// <summary>
/// Finalizes this instance (called prior to garbage collection by the CLR)
/// </summary>
~$ClassName$() {
Dispose(fromUserCode: false);
}

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

private bool disposed = false;

// Declare as private if this class is sealed.
protected virtual void Dispose(bool fromUserCode)
{
if (!disposed)
{
if (fromUserCode)
{
// ToDo - Dispose managed resources (call Dispose() on any owned objects).
// Do not dispose of any objects that may be referenced elsewhere.
}

// ToDo - Release unmanaged resources here, if necessary.
}
disposed = true;

// ToDo: Call the base class's Dispose(Boolean) method, if available.
// base.Dispose(fromUserCode);
}
#endregion

最佳答案

你当然可以做到这一点。你需要的是一个实现相应live template macro的插件执行实际检查。

关于resharper - ReSharper 实时模板可以进行条件代码生成吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12132176/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com