Професионална програма
Loading...
msmilkoff avatar msmilkoff 338 Точки

Override на get-only property в C#

Има ли някакъв workaround да се overrid-не get-only property със setter, защото в следния прост пример, по най-очевидния начин не става:

public abstract class A

{

    public abstact int X { get; }

}

public class B : A

{

    public override int X

    {

        get{ return 0; }

        set { //нещо си } // тук гърми. 

    }

}

0
C# OOP Basics
alex1966 avatar alex1966 255 Точки

public abstract class A

{

    public abstact int X { get; }

}

Тук си направил абстрактен метод (getter)

и отдолу override-ваш Х с getter но му пишеш setter, какъвто при инициализацията няма. С други думи горе при класа А направи и setter, и ще можеш да го override-неш, нещо такова трябва да стане:
 

 public abstract class A
    {
        public abstract int X { get; set; }
    }

    public class B : A
    {
        public override int X { get; set; }
    }

0
msmilkoff avatar msmilkoff 338 Точки

Това е умишлено, аз точно това питах, не искам сетър на базовия клас :)

0
alex1966 avatar alex1966 255 Точки

Тогава не можеш да override-неш setter който го няма, в наследниците.
Един вид искаш да имаш нещо в децата, което в родителите го няма.

1
20/05/2016 11:39:10