2012-03-20 1 views
0

アンマネージコードの周りにC#でラッパーを記述しています。アンマネージコードはセッションを作成し、セッションは2つのメソッド呼び出しに基づいて動的または静的のいずれかになります。アンマネージコードのラッパーのクラスデザイン

ダイナミックとスタティックには異なるタイプが含まれているため、ここではインターフェイスを使用できません。

CreateDynamicが呼び出された場合、それは動的なものです それ以外は静的です。

私の初期のクラスデザインはこのように見えます。

public class Session 
{ 
    public void CreateDynamic() 
    { 
     dynamic = new Dynamic(); 
    } 

    public void CreateStatic() 
    { 
     stat = new Static(); 
    } 

    public Dynamic dynamic; 
    public Static stat; 
} 

私がセッションを作成すると、オブジェクトが作成されたセッションに適用されるメソッドとプロパティが含まれている必要があります。インスタンス化されていないサブセッションにアクセスすると、null参照例外が発生します。この問題を回避する方法はありますか?

+0

これらのフィールドをプライベート*に設定してください。 *抽象基本クラス*を考えてください。 –

+0

@ HansPassant-詳しく説明できますか? – sundar

答えて

0

2つの異なるセッションクラスを作成し、静的クラスを使用して適切なセッションを作成できます。例:

interface ISession 
{ 
    // Common methods 
} 

interface IDynamicSession : ISession 
{ 
    // Methods unique to a dynamic session 
} 

interface IStaticSession : ISession 
{ 
    // Methods unique to a static session 
} 

public class DynamicSession : IDynamicSession 
{ 
} 

public class StaticSession : IStaticSession 
{ 
} 

public static class Session 
{ 
    public IDynamicSession CreateDynamic() 
    { 
     return new DynamicSession(); 
    } 

    public IStaticSession CreateStatic() 
    { 
     return new StaticSession(); 
    } 
} 
+0

これは、話している問題を解決しません。 – sundar

関連する問題