Как я могу читать статические свойства из экземпляров классов?C#

Место общения программистов C#
Ответить
Anonymous
 Как я могу читать статические свойства из экземпляров классов?

Сообщение Anonymous »

Я знаю, что этот вопрос задавался в других вариантах, но я не нашел своего... извините, если дублируется.
У меня есть функция, которая внутренне использует время code> и его свойства, например deltaTime.
Для отладки моей функции я бы не хотел использовать класс Time как есть, но производный класс TimeDebug : Time, и переопределить свойство deltaTime, превратив его во что-то предсказуемое, т.е.:

Код: Выделить всё

public class TimeDebug : Time
{
public static new float deltaTime { get { return 0.2f; } }
}
Моя функция будет использовать класс как полиморфный параметр:

Код: Выделить всё

void DoSomething(TimeDebug timer)
{
...
...
}
Моя функция может получить параметр Time или TimeDebug, в зависимости от «Режима выпуска» или «Режима отладки»:

Код: Выделить всё

DoSomething(new TimerDebug())   // debug mode

DoSomething(new Timer())   // release mode
Теперь возникает вопрос: Компилятор не позволит мне скомпилировать доступ на чтение к статическому члену deltaTime, потому что я делаю это из экземпляра класса. Например, я не могу:

Код: Выделить всё

void DoSomething(TimeDebug timer)
{
Debug.Log(timer.deltaTime);   // won't compile!!
}
Как передать параметр класса, чтобы можно было прочитать свойство deltaTime, независимо от того, является ли параметр класса Time или TimeDebug?
Как передать параметр класса, чтобы можно было прочитать свойство deltaTime, независимо от того, является ли параметр класса Time или TimeDebug?
Как передать параметр класса, чтобы я мог прочитать свойство deltaTime, независимо от того, является ли параметр класса Time или TimeDebug?
п>

Подробнее здесь: https://stackoverflow.com/questions/788 ... ed-classes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»