0

私は単純な変数の割り当てで立ち往生しています。私にとってそれを少し複雑にする唯一の条件は、構造体の値をプライベートにする必要があるため、変更されないことです。

構造体の値を安全に使用できるようにするために、パブリックreadonly変数を使用しようとしています。それが、読み取り専用モードでアプリケーションと情報を共有する方法です。簡単ではないでしょうか?

私は何が欠けていますか?

アプリケーションが開始すると、Page_Load私は呼び出していますSetTablesMetaDetails()

protected void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostBack)
    {
      .... some other App inits here
    }
    
    else
    {
 
    }    

    // this method should be the one that instanciates the DbTable struct
   //..thus sets the values of tables "Name" and "ID"
   currProjData.setTablesReferences(); 
}
  • struct、値を割り当てるために使用されます。
            public class DBMetaDetails
            {
                public struct DbTable
                {
                    public DbTable(string tableName, int tableId): this()
                    {
                        this.TableName = tableName;
                        this.TableID = tableId;
                    }

                    public string TableName { get;  set; }
                    public int TableID { get;  set; }
                }
            }
  • 値を保持する現在のプロジェクト クラス
public static class currProjData 
{
    static DBMetaDetails.DbTable CustomersMeta = new DBMetaDetails.DbTable();
    static DBMetaDetails.DbTable TimesMeta = new DBMetaDetails.DbTable();

    public static void SetTablesMetaDetails()
    {

        TimesMeta.TableID = HTtIDs.TblTimes;
        TimesMeta.TableName = HTDB_Tables.TblTimes;

        CustomersMeta.TableID = HTtIDs.TblCustomers;
        CustomersMeta.TableName = HTDB_Tables.TblTimeCPAReport;

    }

    public static readonly int CustomersTid = CustomersMeta.TableID;
    public static readonly string CustomersTblName = CustomersMeta.TableName;

    public static readonly int TimesTid = TimesMeta.TableID;
    public static readonly string TimesTblName = TimesMeta.TableName;
}

私の問題は、これらの 2 セットのテーブル ( Tid& TblName) の詳細をアプリケーションの残りの部分に公開する必要があることですが、アプリケーションが起動すると、SetTablesMetaDetails()

最後の 4 行が実行されません。このセクションを移動しようとしましSetTablesMetaDetails() たが、正しい構文ではありません。エラーが発生します。

の割り当てを達成する正しい方法は何CustomersTidですか? (残りの 3 もオフコース)

public static readonly int CustomersTid = CustomersMeta.TableID;

これは私が見逃しているものです。上記の構造体と同じ方法で初期化する方法がわからないためです...できれば1つのメソッド呼び出しで

4

2 に答える 2

4

それらをローカルで変更したいが、グローバルに読み取る場合は、セッターに修飾子を追加します。

public string TableName { get;  private set; }
public int TableID { get;  private set; }

可能性がありますinternalまたはprotectedあなたがしたい場合。

于 2012-12-06T17:22:49.493 に答える
2

プロパティを使用

public static int CustomersTid { get { return CustomersMeta.TableID; } }
public static string CustomersTblName { get { return CustomersMeta.TableName; } }

public static int TimesTid  { get { return TimesMeta.TableID; } }
public static string TimesTblName  { get { return TimesMeta.TableName; } }
于 2012-12-06T17:25:33.593 に答える