2012-04-19 244 views
0

我有我的解決方案和數據類項目網站
數據類參考網站
現在我想重寫方法從數據類網站
我認爲這是可能的,因爲編譯數據類後在網站上的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 2012-04-19 10:21:22

回答

2

偏類定義只定義相同的類,如果局部類定義的命名空間是相同的,並且它們在沒有定義合適的方法相同的組件。
這兩個標準都不符合您的情況。

如果我正確理解您的意圖,您希望給您的數據類的消費者更改getUserID()方法的行爲的可能性,同時仍然使用數據類項目中的類logFunctions

您可以通過多種方式實現此目的,其中一個非常簡單的做法是在調用getUserID()時給logFunctions一個委託。另一種可能性是引入傳遞給logFunctions的接口。

示例第一個選項:

在你的數據項目:

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(); 
    } 
} 

在Web項目:

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

我想使用我的網站的屬性值到我的數據類。實驗我無法訪問我的數據類中的這個屬性。所以我想做它覆蓋網站返回屬性值 – Mehdi 2012-04-19 10:37:42

+0

@ Mehdi:這可以用我給你看的方法。 – 2012-04-19 11:21:26

0

logFunction類在你的網站需要繼承forInherit在你的數據類項目中的類。

雖然兩者的logFunctionpartial他們在不同的項目,很可能命名空間(不指定)。所以,無論是僅由名稱,而不是由編譯器有關。