- PR -

publicな列挙体を宣言する場所につきまして

1
投稿者投稿内容
骨骨★Rock!
常連さん
会議室デビュー日: 2007/09/11
投稿数: 38
投稿日時: 2008-07-31 17:15
いつもお世話になっております。

表題の件ですが、これまで列挙体を使った事はなかったのですが、
ソースがより分り易くなるかと思い書いてみましたが、どこに記述するのが一般的(使いやすい)のだろうと悩んでおります。

プロジェクトの主な名前空間は以下の4つです。

UI(ユーザーインターフェース層)
BLL(ビジネスロジック層)
DAL(データアクセス層)
Model(データオブジェクト)

下記のように本の情報を保持するAddressInfoの中でAddressTypeのintの値の
代わりに列挙体を使用しようとおもったのですが、どこに宣言してよいものやら...
すべての層で参照される名前空間はModelなので、この中に宣言しておけばよいものでしょうか。

コード:
namespace Model
{
 public enum AddressType : int
 {
     Shippping = 0
    ,Billing
 }

 public class AddressInfo
 {
  private int addressType; 
 
  public int AddressType {
     get{ return addressType; }
     set{ addressType = value;}
  }
 }
}



すごく初歩的な質問ですがご教授頂けますと幸いです。
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2008-07-31 17:36
何故疑問に思ったのかイマイチわからないですが、
Model で使われるのだから Model ですね。

それと、たぶん単なる記載ミスだと思いますが、
フィールドやプロパティの型も int ではなく AddressType に変更した方がいいですよ。
コード:
public class AddressInfo
{
  private AddressType addressType; 
  public AddressType AddressType {
   get{ return addressType; }
   set{ addressType = value;}
}



_________________
C#と諸々
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-07-31 17:58
AddressType という列挙型が、AddressInfo クラスの中でしか利用(≠参照)されないのであれば、AddressInfo クラスの内部で定義するという考え方もあります。
# 入れ子クラスというのかな?

ただこの場合ですと、AddressType という名称が、列挙型の名前と AddressInfo メンバ とで被ってますので、どっちかを直さないといけないですが。
骨骨★Rock!
常連さん
会議室デビュー日: 2007/09/11
投稿数: 38
投稿日時: 2008-07-31 18:17
rain様、
ご返信ありがとうございます。

引用:

AddressType という列挙型が、AddressInfo クラスの中でしか利用(≠参照)されないのであれば、AddressInfo クラスの内部で定義するという考え方もあります。
# 入れ子クラスというのかな?

ただこの場合ですと、AddressType という名称が、列挙型の名前と AddressInfo メンバ とで被ってますので、どっちかを直さないといけないですが。



はじめrain様がおっしゃるようにAddressInfoの中で定義したのですが、
別クラスのメソッドのパラメーターにAddressTypeを使いたい場合に、
GetHoge(AddressInfo.AddressType addressType, Hoge hoge)のように記述する必要があり、
これはちょっと...という感じになってしまいこちらへ投稿させていただいた次第です。


アドバイスありがとうございます。
骨骨★Rock!
常連さん
会議室デビュー日: 2007/09/11
投稿数: 38
投稿日時: 2008-07-31 18:21
よこけん様、
いつもいつもありがとうございます。

引用:

何故疑問に思ったのかイマイチわからないですが、
Model で使われるのだから Model ですね。



rain様への返答の中で書いたのですが、はじめAddressInfoの中で宣言したのですが、
しっくりこず、どこへ宣言すべきか迷ってしまいました。。。


引用:

それと、たぶん単なる記載ミスだと思いますが、
フィールドやプロパティの型も int ではなく AddressType に変更した方がいいですよ。


すみません、記載ミスです。
掲示板に投稿するときに、ハンドコーディングで書くへんな癖がありまして。。。
以後気をつけます。

本当にありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)