我需要在部分單獨的程序集中定義一個類。實際上,我需要重新定義一個類,這已經在使用C++ Cli編寫的程序集中定義,但這也許是另一個問題。
的情況下,C#編寫的所有代碼,我有一個基類定義basenamespace裝配沒有找到合適的方法來覆蓋部分類錯誤
using System;
namespace BaseNameSpace
{
public class BaseClass
{
public int Num;
public double dNum;
public BaseClass(int s, double d)
{
Num = s;
dNum = d;
}
public virtual void Wrt()
{
Console.WriteLine("{0},{1}", Num, dNum);
}
}
}
我添加名爲derivedclassSpace另一個組件項目,並宣佈從基類派生的derivedclass。我也爲這個項目添加了一個部分類定義。
using System;
using BaseNameSpace;
namespace BaseNameSpace
{
public partial class BaseClass
{
public void Mult()
{
Num *= 2;
}
}
}
namespace DerivedNameSpace
{
public class DerivedClass : BaseClass
{
public DerivedClass(int s)
: base(s, 0)
{
}
public override void Wrt()
{
Mult(); // mult line
base.Wrt();
}
}
}
當我生成解決方案我得到
'DerivedNameSpace.DerivedClass.Wrt()': 發現重寫
如果刪除了局部類線沒有合適的方法和多線,一切都很正常。
我使用partial關鍵字的概念嗎?我怎樣才能擺脫錯誤?
確實。部分類是C#語言的一個特性,而不是.Net平臺的特性,所以一旦某種東西被編譯爲IL,就不再有能力使用部分類。 – 2010-10-29 14:51:42
@Steve:事件比較好說 - C#編譯器 – abatishchev 2010-10-29 14:53:36
它說名字'Mult'在當前上下文中不存在。我認爲這將是 「BaseClassExtensions.Mult(this);」 – 2010-10-29 15:01:33