我正在尝试访问一些仅在子类中可用的特定变量。但问题是我通过参数接收了这个类的父级。即使有铸造,我似乎也无法访问成员。 可以吗?
public class ENUMTranslator : ITranslate<RedisData>
{
public string Translate(RedisData message)
{
string bitMask = message.AssociatedParam.ParamDictionary["Bitmask"];
var enumerations = (EnumParams)message.AssociatedParam.EnumDictionary
}
}
问题是数据不在消息本身中,而是在AssociatedParam
里面,这是EnumParams
的父类。
我要访问的EnumDictionary
应该位于EnumParams
,但我无法访问它。
编辑:这是EnumParam类。
message.AssociatedParams
是GAPParam
public class EnumParams : GAPParam
{
#region Class Members
/// <summary>
/// Dictionary for the enums linking name with hex value
/// </summary>
private Dictionary<string, string> _enumDictionary;
#endregion // Class Members
#region Properties
/// <summary>
/// Dictionary for the enums linking name with hex value
/// </summary>
public Dictionary<string, string> EnumDictionary
{
get { return _enumDictionary; }
set { _enumDictionary = value; }
}
#endregion // Properties
#region Constructor
/// <summary>
/// Initialise the dictionaries
/// </summary>
public EnumParams()
{
_enumDictionary = new Dictionary<string, string>();
}
#endregion // Constructor
}
我用intellisense看不到它,也不会编译。
答案 0 :(得分:0)
你可以将message.AssociatedParam
投射到EnumParams
:
var enumerations = ((EnumParams)message.AssociatedParam).EnumDictionary
但如果message.AssociatedParam
无法转换为EnumParams
,那么它将在运行时失败。一些减轻风险的方法:
EnumDictionary
代替GAPParam
吗?即使它是虚拟的还是抽象的?message.AssociatedParam
应该是EnumDictionary
而不是GAPParam
?message.AssociatedParam
是EnumParams
- 但如果不是,你会怎么做?