Как мне создать вложенные свойства?C # - PullRequest
0 голосов
/ 28 сентября 2019

Насколько я понимаю, создание вложенных свойств в c # кажется невозможным.

Я хочу сделать следующее:

Callout callout = new Callout();
callout.Font.Size = 200;

Это код, который я сейчас используюесть

class Callout
{
     // nested properties
}

Я знаю, как создавать свойства, но как мне создать вложенное свойство?

Ответы [ 3 ]

3 голосов
/ 28 сентября 2019
class Callout {
    public Font Font {get;} = new Font();
}
class Font {
    public int Size {get;set;}
}
1 голос
/ 28 сентября 2019

Если вы действительно не хотите реализовывать отдельный класс или структуру, вот хитрый способ сделать то, что вы просите.

Примечание: хитро! = Рекомендуется

class Callout : Callout.IFont
{
    public interface IFont
    {
        int Size { get; set; }
    }
    protected int _fontSize = 0;

    int IFont.Size
    {
        get
        {
            return _fontSize;   
        }
        set
        {
            _fontSize = value;
        }
    }

    public IFont Font => this;
}


var callout = new Callout();
callout.Font.Size = 100;
1 голос
/ 28 сентября 2019
public class Callout {

    public Font Font {get;}
}

public struct Font {
    public Font(int size) {
        Size = size;
    }

    public int Size {get;}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...