2017-11-20 6 views
-2

私の目標は、基本クラスのメンバー変数と抽象メソッドを使用して、これらのタイプのオブジェクトが複数存在するため、変更されない静的オブジェクトを作成することです。コンストラクタなしで派生クラスのデフォルト値を設定することは可能ですか?

これは私が何をしたいの例です。

public abstract class BaseThing 
{ 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public decimal Cost { get; set;} 

    public abstract void MethodThatDoesThings(); 
} 

その後、私はそれらのベースの変数、このような何か(明らかに動作しません)のデフォルト値を持つ派生オブジェクトを持つようにしたいです。

public class DerivedThing : BaseThing 
{ 
    Name = "Name1"; 
    Description = "Description1"; 
    Cost = 1.00; 

    public override void MethodThatDoesThings() 
    { 
     //Actually does things 
    } 
} 

コンストラクタを使用せずにこのようなことはありますか?私はそれらを使用することに反対ではない、私は真に興味があります。今私の唯一の選択肢は、同じプロパティを持つ多くの静的クラスを作成することです。

+0

派生型はそれらをオーバーライドする必要があります(または 'virtual'の場合)できますか? – bassfader

+0

さて、 'public new string Name {get;セット; } = "Name1"; 'しかし、それはちょっと厄介でコードの匂いです。あなたは何をしようとしているのですか? – DavidG

+0

@DavidGうん、それはかなり総体に見える:3。私は、継承構造を利用しながら、このオブジェクトをかなり静的にする最も簡単な方法を見つけようとしています。 – Blankdud

答えて

1

いいえ、派生クラスのコンストラクタを実装して、デフォルト値を設定する必要があります。デフォルト値を設定する場合は、このようにすることができます。

public class DerivedThing : BaseThing 
{ 
    public DerivedThing(string name = "Name", string description = "Description1", decimal cost = 1.0) 
    { 
     Name = name; 
     Description = description; 
     Cost = cost; 
    } 
    public override void MethodThatDoesThings() 
    { 

    } 
} 
+1

直接回答ありがとうございます。私はそれがおそらく愚かな質問であったことを理解しています。 – Blankdud

+0

ようこそ。 – lucky

関連する問題