如何解决如何避免两个具有相同属性的类
我正在Unity3D中使用C#进行编码。这是我对堆栈溢出的第一个问题。我希望秩序井然。
在我的游戏中,我有两个空的子类,它们像枚举扩展一样工作,并且完全相同:
public class Condition {
public int ID { get; set; }
public int IDAsBitMask { get { return 1 << ID; } }
public string Name { get; set; }
public Sprite Picture { get; set; }
}
public class PositiveCondition : Condition { }
public class NegativeCondition : Condition { }
这两个空子类的原因是,因此我只能将一个子类的成员传递给HarmfulTrap类中的方法:
public class HarmfulTrap {
int myBitMask;
public bool HasCondition(NegativeCondition condition) {
return (myBitMask & condition.IDAsBitMask) == condition.IDAsBitMask;
}
}
但是创建两个不声明任何内容的子类似乎是多余的。 我有办法避免这种代码架构吗?而且仍然只能将否定条件作为参数传递给我的HarmfulTrap方法?我正在寻找一种在编译时有效的方法。在运行时,HasCondition方法内没有验证检查。
谢谢。
解决方法
您可以在Condition类中添加诸如“ isNegative”之类的公共布尔,然后从对象中访问该变量以检查它是正还是负。
public class Condition {
...
public bool isNegative { get; set; }
}
在您的函数中:
public class HarmfulTrap {
int myByteMask;
public bool HasCondition(Condition condition) {
if(condition.isNegative)
{
return (myByteMask & condition.IDAsBitMask) == condition.IDAsBitMask;
}
//add else here with the default value you want to return
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。