【发布时间】:2019-03-29 04:36:54
【问题描述】:
我正在尝试重构一些代码,并且不得不承认我对泛型的概念不熟悉。
我有一个基类:
BaseVarDef.cs:
using UnityEngine;
public abstract class BaseVarDef<T> : ScriptableObject
{
[Multiline]
public string DeveloperDescription = "";
public T Value;
public void SetValue(T value)
{
Value = value;
}
}
然后我有几个由此派生的类。但它们都包含相同的 3 个方法,我想将它们重构为这个通用基类。唯一的区别是他们期望当前定义它们的泛型类型或类。
FloatVar.cs
using UnityEngine;
[CreateAssetMenu(fileName = "New FloatVar", menuName = "Variables/FloatVar")]
public class FloatVar : BaseVarDef<float>
{
public void SetValue(FloatVar value)
{
Value = value.Value;
}
public void ApplyChange(float amount)
{
Value += amount;
}
public void ApplyChange(FloatVar amount)
{
Value += amount.Value;
}
}
StringVar.cs
using UnityEngine;
[CreateAssetMenu(fileName = "New StringVar", menuName = "Variables/StringVar")]
public class StringVar : BaseVarDef<string>
{
public void SetValue(StringVar value)
{
Value = value.Value;
}
public void ApplyChange(string amount)
{
Value += amount;
}
public void ApplyChange(StringVar amount)
{
Value += amount.Value;
}
}
有没有办法将 SetValue 和 2 个重载的 ApplyChange 方法重构为 BaseVarDef.cs?
提前致谢
【问题讨论】: