(どのようにハイレベルのクラスは、高レベルのデータと基底クラスのメソッドを呼び出すことができます)、それはおそらく、だまされやすい人だが、ここで私はc#静的プロパティをオーバーライドできないのはなぜですか?私の質問は、おそらくうまく言葉で表現されていない
class person {
protected static string request = "select * from person where gender in ('male','female')";
public string sharedmethod()
{
return "the request is" + request;
}
}
class man:person
{
override protected static string request = "select person.*,man.* from person,men where mytype in ('male') ";
DateTime dateOfFirstCar;
}
class woman:person
{
override protected static string request = "select person.*,woman.* from person,women where mytype in ('female') ";
DateTime dateOfFirstITBAG;
}
class Program
{
static void Main(string[] args)
{
if (new person().sharedmethod() == new man().sharedmethod())
Console.Write("too bad query is the same in base and dervide class");
}
}
を行く男が
女性がある人ですある人
人、男性、女性がデータベースに存在しますが、異なるクエリが必要です
これらのクエリを複製したくないので、各クラスの静的プロパティにそれらを格納することをお勧めしました。
私はいくつかの低レベルのもの(そこに考え出していない)、基本クラスでその嘘を(私が複製する必要はありませんだって)だと私はheritedクラス
の文脈で基底クラスのメソッドを呼び出すために継承したクラスを望んでいました(person.somemethodを実行する私は男をしたい。(のsomeMethod [継承]))が、男
から来る変数が
ありがとうございますが、人の質問はどうですか? – frenchone
@frenchone私はその部分を逃した。 'abstract'ではなく' virtual'プロパティを作成し、 'person'クラスで実装を追加し、導出された実装に' override'を追加する必要があります。 – dasblinkenlight
よろしくお願いします – frenchone