Несколько классов с одинаковыми свойствами, но разными типами - PullRequest
1 голос
/ 05 августа 2020

Я хочу создать класс с теми же именами полей, что и другой класс, но с другими типами полей. например:

public class Core
{
    public float Temperature { get; private set; }
    public float Load { get; private set; }
    public float Clock { get; private set; }

...

Я получил вышеуказанный класс, и мне нужен другой класс со всеми полями, но в логическом типе.

public class CoreThreshold
{
    public bool Temperature { get; private set; }
    public bool Load { get; private set; }
    public bool Clock { get; private set; }
...

То, как я это сделал, жестко запрограммировано как и выше, и задался вопросом, есть ли способ лучше.

Я хочу сделать его OOP доступным, а не с помощью метода, который получает строку и возвращает значение. Также просто для того, чтобы сделать значение с плавающей запятой либо 1, либо 0, как логическое, не является вариантом (фактический тип не является плавающим).

Можно ли это сделать, или единственный вариант - жестко закодировать каждую деталь в два класса?

1 Ответ

1 голос
/ 05 августа 2020

Не знаю, сработает ли это так, как вы надеетесь, но я собираюсь сделать снимок в темноте.

У вас может быть базовый класс, поддерживающий Generic. Например:

public abstract class BaseCore<T>
{
    public T Temperature { get; protected set; }
    public T Load { get; protected set; }
    public T Clock { get; protected set; }
}

Затем выведите несколько классов на основе этого:

public class Core : BaseCore<float>
{
}

public class CoreThreshold : BaseCore<bool>
{
}

Итак, вам все, что вам нужно сделать, это добавить еще одно свойство к BaseCore, и все производные классы будут автоматически получить это. Код дублировать не нужно.

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