2012-04-19 9 views
0

私は私の溶液中でのウェブサイトを持っており、データクラスプロジェクト
データクラスはウェブサイト
を基準としている今、私はウェブサイト
にデータクラスからオーバーライドメソッドaをしたい私はこれが可能だと思いますので、コンパイルデータクラスの後にウェブサイトでのdllがあるオーバーライドメソッド

私のデータクラス:

public partial class forInherit 
{ 
    public virtual int getUserID() 
    { 
     return 0; 
    } 
} 

public partial class logFunctions : forInherit 
{ 
} 

と私のウェブサイト:

public partial class logFunctions 
{ 
    public override int getUserID() 
    { 
    } 
} 

が、私のエラーが

パーシャルクラス定義の名前空間が同じであり、それらが定義されている場合のみ、同じクラスを定義

+2

部分は、プロジェクト間ではなく、ソースファイルを分割するために使用されます – Jodrell

答えて

2

部分クラス定義を上書きすることが分かっていない適切な方法であります同じアセンブリ。
あなたの場合、どちらの基準も満たされていません。

私が正しくあなたの意図を理解していれば、あなたのデータクラスの消費者はまだあなたのデータクラスのプロジェクトからクラスlogFunctionsを使用しながら、getUserID()方法の動作を変更する可能性を与えたいです。

これはいくつかの方法で実現できます。logFunctionsには、getUserID()が呼び出されたときに呼び出される代理人を指定するのが非常に簡単です。もう1つの可能性は、logFunctionsに渡されるインターフェイスを導入することです。

例最初のオプションのために:あなたのデータプロジェクトで

:Webプロジェクトで

public class forInherit 
{ 
    public virtual int getUserID() 
    { 
     return 0; 
    } 
} 

public class logFunctions : forInherit 
{ 
    public Func<int> GetUserIDDelegate { get; set; } 

    public override int getUserID() 
    { 
     if(GetUserIDDelegate == null) 
      return 0; 
     return GetUserIDDelegate(); 
    } 
} 

logFunctionsInstance.GetUserIDDelegate =() => { return 1; }; 
+0

私のウェブサイトのプロパティ値をデータクラスに使用したいと思います。データクラスのこのプロパティにアクセスできません。プロパティ値を返すためのWebサイト – Mehdi

+0

@Mehdi:それは私があなたに示したアプローチで可能です。 –

0

あなたのウェブサイトでlogFunctionクラスはforInheritを継承する必要がありますあなたのクラスのデータクラスプロジェクト。

logFunctionクラスは両方とも異なるプロジェクトにあります(名前は指定しません)

関連する問題