gpt4 book ai didi

c# - .Net 编译器 Hook

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:27 25 4
gpt4 key购买 nike

我所有的数据对象都实现了一个 IFillable 接口(interface)

Public Interface IFillable
Sub Fill(ByVal Datareader As Data.IDataReader)
End Interface

在对象本身中,您通常会看到类似的东西

Public Class Supplier
Implements IFillable

Public Sub New()
End Sub

Public Sub New(ByVal SupplierID As Guid, ByVal CompanyID As Guid, ByVal Description As String)
Me._SupplierID = SupplierID
Me._CompanyID = CompanyID
Me._Description = Description
End Sub

Public Property SupplierID As Guid
Public Property CompanyID As Guid
Public Property Description As String

Public Sub Fill(ByVal Datareader As System.Data.IDataReader) Implements IFillable.Fill
If Not Datareader.IsClosed Then
Me._SupplierID = Datareader.GetGuid(Datareader.GetOrdinal("SupplierID"))
Me._CompanyID = Datareader.GetGuid(Datareader.GetOrdinal("CompanyID"))
Me._Description = Datareader.GetString(Datareader.GetOrdinal("Description"))
End If
End Sub

End Class

现在这是棘手的一点。鉴于我所有的属性名称WILL ALWAYS 匹配我的数据库列名我想做的是使用反射在编译时生成填充方法并推断类型和列名数据读取器。

我假设我需要将此功能构建为某种工具/vs 插件?我正在寻找的是有关解决此问题的最佳方法的指导。

PS:顺便说一句:显然我可以在运行时使用反射轻松地做到这一点,但我不想为此而受到性能影响(尽管理论上如果我能以某种方式缓存值(静态类?)它可能不会太糟糕) .

最佳答案

为什么不在“构建前”步骤中使用简单的生成器来创建代码。

我们已经创建了自己的代码生成器,当数据库定义更改后手动触发时,它会生成代码内数据层。

关于c# - .Net 编译器 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4732500/

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