2016-06-30 39 views
0

我有一個訪問器繼承的問題,我無法定義設置方法。無法定義與抽象集合

我的代碼:

public abstract class MotherOfDragons 
{ 
    public abstract String DragonsName { get; } 
} 

的類繼承:

public class Drogon : MotherOfDragons 
{ 
    public override String DragonsName { get; set; } 
} 

public class Viserion : MotherOfDragons 
{ 
    public override String DragonsName { get; } 
} 

它的作品咕對ViserionDrogon我有錯誤CS0546

'訪問':無法重寫,因爲'property'沒有可覆蓋的set訪問器

可以解決這個錯誤,但不需要在類MotherOfDragons中添加set訪問器?我想保留這個字段只讀期望一個案例。

謝謝

+2

http://stackoverflow.com/questions/2026546/override-get-but-not-set – sircodesalot

+0

它是一個解決方案,使用接口不是抽象類。如果你改變:公共接口MotherOfDragons,然後刪除覆蓋 – tire0011

+0

我不能做'MotherOfDragons'作爲接口,我實現了一些方法裏面,它從其他類繼承 –

回答

0

謝謝@sircodesalot

我終於做出這樣的:

public class Drogon : MotherOfDragons 
{ 
    private String dragonsName; 
    public override String DragonsName { get { return dragonsName; } } 

    public void Change_DragonsName(String name) 
    { 
     dragonsName = name; 
    } 
} 

它的工作原理,而不是像一個set,但它的作品。

+0

如果你不想改變基本值,你可以簡單地做'public new string DragonsName {get;組; }(不需要字段或方法)。 – Sinatr

+0

我一開始嘗試這個,但它返回一個錯誤'cs0534類沒有實現繼承的抽象成員' –

+0

哎喲,我的壞。錯過了'抽象'基類(用於普通的'虛擬'屬性)。 – Sinatr