我有一个包含参数字典的类:
public class Parameter : IExecutionParameter, IDesignerParameter
{
}
public interface IExecutionSettings
{
IDictionary<string, IExecutionParameter> Parameters { get; }
}
public interface IDesignerSettings
{
IDictionary<string, IDesignerParameter> Parameters { get; }
}
public class Settings : IExecutionSettings, IDesignerSettings
{
private Dictionary<string, Parameter> _parameters;
// TODO: Implement IExecutionSettings.Parameters
// TODO: Implement IDesignerSettings.Parameters
}
我想创建这些接口的显式实现(我知道该怎么做),但我无法弄清楚如何正确地转换字典。
任何帮助将不胜感激。
答案 0 :(得分:4)
你不能,因为它不安全。假设您可以将Dictionary<string, MemoryStream>
转换为IDictionary<string, IDisposable>
- 您可以通过后一个引用将任何 IDisposable
值放入字典中,即使实际字典只能容纳MemoryStream
- 兼容的引用。
您可能会创建一个只读字典包装器,它会为所有读取委托给基础字典,并在所有写入时失败。然后,您可以将Dictionary<string, Parameter>
包装在其中两个“视图”词典中。这会有点痛苦,但可行。在你的情况下,这是否是最合适的方法是另一回事。
也许您应该:
public interface IExecutionSettings
{
IExecutionParameter this[string key] { get; }
}
public interface IDesignerSettings
{
IDesignerParameter this[string key] { get; }
}
您可以在Settings
内轻松实现这两个(明确)。