可以在部分 class 中扩展构造函数吗?

Possible to extend constructor in partial class?

我正在使用 MS Access 数据库(我知道...),因此为了捕获自动生成的主键,我正在扩展 table 适配器 class。我花了一些时间来弄清楚这部分,所以如果这是你的问题,以后 reader,右键单击你的数据集文件 (*.xsd) 和 select 查看代码。这将创建部分 class。 GetLastID() 方法只是一个带有 SELECT @@IDENTITY 的查询。诀窍是它必须在更新行时完成,而不是关闭和打开新连接,因此需要处理 RowUpdated 事件。这是相关代码:

namespace TimeTrack.TimeTrackDataSetTableAdapters
{
    public partial class TimeSlipsTableAdapter
    {
        public void CustomSetup()
        {
            Adapter.RowUpdated += Adapter_RowUpdated;
        }

        private void Adapter_RowUpdated(object sender, OleDbRowUpdatedEventArgs e)
        {
            if (e.StatementType == StatementType.Insert && e.Errors == null)
            {
                int lastID = (int)GetLastID();
                e.Row["ID"] = lastID;
                e.Status = UpdateStatus.SkipCurrentRow;
            }
        }
    }
}

我的问题是:有没有办法避免调用 CustomSetup() 方法?

我想以某种方式将事件处理程序分配包含在 table 适配器的构造中,而无需进行额外的调用。有办法吗?

我认为您已经找到了最佳解决方案。虽然您可以添加新的构造函数(具有不同的签名),但在 C# 中,部分 类 无法向构造函数添加额外的步骤。唯一的方法是使用方法。