Общий параметр перечисления в С#?C#

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

Сообщение Anonymous »

Я хочу создать универсальный класс для воспроизведения анимации на любой 3D-модели

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

public class AnimationController {

public void ChangeAnimation(string animation, int priority = 0, float crossfadeDuration = 0.2f, float animationSpeed = 1f) {
if(priority is higher && this animation isn't already playing) {
model.PlayAnimation(animation);
}
}

}
Но вместо строкового типа в качестве первого параметра я хочу использовать перечисление, но я не хочу использовать в качестве параметра конкретный тип перечисления, например «FireballAnimation»:< /p>

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

public void ChangeAnimation(FireballAnimation animation)
потому что тогда класс перестанет быть модульным^
И я бы предпочел не вызывать метод .ToString() каждый раз, когда я хочу вызвать ChangeAnimation( )
Я хочу, чтобы в одной и той же базе кода было возможно следующее:

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

// In the context of a fireball class:
public enum FireballAnimation {
Casted,
Flying,
Impact,
}

AnimationController.ChangeAnimation(FireballAnimation.Impact);

// In the context of a Player class:
public enum PlayerAnimation {
None,
Idle,
Walking,
StrafingLeft,
StrafingRight,
WalkingBackwards,
Jumping,
Casting,
}

AnimationController.ChangeAnimation(PlayerAnimation.Jumping);
^Это возможно только в том случае, если первый параметр метода ChangeAnimation каким-то образом относится к универсальному типу перечисления. Возможно ли это на C#?


Подробнее здесь: https://stackoverflow.com/questions/793 ... meter-in-c
Ответить

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

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

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

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

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