1

我有一个相当大的 VB.NET 项目,它是由一位前雇员构建的。他得到了大部分工作,但不是全部。

我知道,它已经这样运行了 2 年。也许3。

现在,管理层正在推动恢复这个项目并完成从未完成的工作。

该项目已分配给我,我有一个月的时间来加快进度。

我正在用 C# 重新编写它,因为我的编码在该语言中更强大。

他使用的一个好主意是构造类,以便它们模仿数据库表:

  • 表名变成类名
  • 列名成为属性名
  • 列数据类型成为属性数据类型

这是一个小例子:

Public Class Acct_Code
    Private _Acct_Code_ID As String = String.Empty
    Private _Acct_Code As String = String.Empty

    Public Property Acct_Code_ID() As String
        Get
            Return _Acct_Code_ID
        End Get
        Set(ByVal value As String)
            _Acct_Code_ID = value
        End Set
    End Property

    Public Property Acct_Code() As String
        Get
            Return _Acct_Code
        End Get
        Set(ByVal value As String)
            _Acct_Code = value
        End Set
    End Property

End Class

目前,由于错误 CS0542显示,我无法将此 VB 代码放入 C# 中:

错误消息
“用户定义类型”:成员名称不能与其封闭类型
相同 在同一构造中多次使用名称。此错误可能是由于无意中将返回类型放在构造函数上造成的。

我知道应该重命名类或属性;但是,我想一次让这个项目工作,而不是在这里创建根本不起作用的代码。

有谁知道解决此编译器错误的方法 - 只是暂时的,直到我建立项目?

我知道有一些方法可以忽略警告和忽略异常,但我不知道忽略编译器错误的方法。

4

2 回答 2

3

要解决编译器错误,只需将您的类拆分为基类和派生类,然后将有问题的成员移动到基类中。

class A
{
    public string B { get; set; } // <-- This compiles just right!
}

class B : A
{
}
于 2015-04-28T12:21:39.560 回答
1

你不能忽视违反语言规则的行为。您必须修改名称。

您可能很想在移植之前尝试在 VB中修复名称,因为这样您就可以随时拥有一个工作代码库......这将使您能够利用重构。然后,当您确定所有成员名称都与类型名称不同时,您可以移植到 C#。

顺便说一句,当您移植该代码时,您应该利用自动实现的属性,留下:

public class Account
{
    public string Id { get; set; }
    public string Code { get; set; }
}

(然后尝试远离允许对象以所有可能的方式变异......这是另一回事:)

于 2013-02-15T17:03:26.513 回答