從您的代碼,看來你是問如何使用您的父類的構造從子類?
可以調用構造函數的基礎是這樣的:
public ChildClass(string name, Feature extraFeature)
:base(name) //this initializes this class with the constructor of the base class
{
Features.Add(extraFeature); //this adds your extraFeature to the features-list.
}
allthough,我也很難完全明白你的問題。例如;如果這個額外的功能必須傳遞給ChildClass的構造函數,那麼給父類添加一個AddFeature方法會不會更好?
或者ChildClass有額外的功能總是相同的,在這種情況下,它不需要作爲構造函數參數?
是名稱參數類的名稱,功能列表實際上只是調用的方法列表?如果是這樣;你有沒有考慮過使用反射?
編輯;我接受你的情況:
public class FeatureObject
{
public String Name { get; private set; }
public Dictionary<String,String> Features { get; private set; }
public FeatureObject (string name)
{
Name = name;
Features = new Dictionary<String, String>();
Features.Add("Name",name);//just an example of a feature that all objects have
}
}
public class Fish: FeatureObject
{
public Color Color { get; private set; }
public Fish(String name, Color color)
:base(name) //initializes Name and Features as described in FeatureObject-class
{
Features.Add("Color", color.ToString());//Adds color to the features-dictionary
}
}
我仍然認爲你可以做到這一點更容易。
例如,這種方法將嘗試在一個對象返回指定屬性的字符串表示:
public static String GetPropertyValue(object o, String property)
{
try
{
return o.GetType().GetProperty(property).GetValue(o, null).ToString();
}
catch(Exception)
{
return null;
}
}
,如果你有一個字典對象你的對象,你可以在這樣的方法獲取它們:
public static String GetPropertyValue(String objectName, String propertyName)
{
try
{
var o = Objects[objectName];
return GetPropertyValue(o, propertyName)
}
catch (Exception)
{
return null;
}
}
我不想調用父類的構造函數;我想傳入一個已經構建的父對象作爲參數。 以前的答案提到'複製構造函數',這是我不知道存在的;它現在似乎已被刪除,但這是我正在尋找的答案。 雖然謝謝。 – Ollyver