1

元従業員によって作成されたかなり大きなVB.NETプロジェクトがあります。彼はそれのほとんどを機能させましたが、すべてではありませんでした。

このように2年間稼働していると思います。おそらく3。

現在、経営陣はこのプロジェクトを復活させ、これまで行われなかったことを終わらせることを推進しています。

プロジェクトは私に割り当てられており、私はそれを理解するために1か月を与えられました。

私のコーディングはその言語でより強力なので、私はそれをC#で書き直しています。

彼が使用した優れたアイデアの1つは、データベーステーブルを模倣するようにクラスを構造化することでした。

  • テーブル名クラス名になります
  • 列名はプロパティ名になります
  • 列のデータ型はプロパティのデータ型になります

これが1つの小さな例です:

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#に入れることができません。

エラーメッセージ
「user-definedtype」:メンバー名は、それらを囲むタイプと同じにすることはできません。
名前が同じ構成で複数回使用されました。このエラーは、コンストラクターに誤って戻り型を設定したことが原因である可能性があります。

クラスまたはプロパティの名前を変更する必要があることを理解しています。ただし、ここでまったく機能しないコードを作成するのではなく、このプロジェクトを一度に機能させたいと思います。

このコンパイラエラーを回避する方法を知っている人はいますか?プロジェクトがビルドされるまで一時的にですか?

警告を無視して例外を無視する方法があることは知っていますが、コンパイラエラーを無視する方法がわかりません。

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 に答える