如何编写从接口到另一种类型的隐式转换?
|
我正在尝试执行以下操作:
public class SomeWrapper : ISomeWrapper{
public static implicit operator ActualRec(ISomeWrapper someWrapper)
{
return ((SomeWrapper)someWrapper).SomeInfo;
}
}
但是这段代码失败,说:
\“参数或返回类型必须为SomeWrapper类型”。
我了解编译说明的问题。但是我需要这种类型的转换b,因为在我的整个应用程序中,我都使用ISomeWrapper作为变量,存储SomeWrapper实例。 (此外,SomeWrapper是唯一实现ISomeWrapper的类)。
如果ISomeWrapper接口连接到我在具体类中知道的类型,有什么方法可以进行隐式转换?
编辑:
正如所有人所建议的那样,在C#中无法从接口进行隐式强制转换。
我需要这样做的原因?我想允许(隐式地)允许ISomeWrapper的用户调用需要ActualRec作为参数的方法,而又不授予ISomeWrapper的用户访问ActualRec的方法/属性的权限。
例如,
如果我在ISomeWrapper中包含了ActualRec属性,则ISomeWrapper的用户将能够调用ActualRec中可用的方法(例如,someWrapper.ActualRec.Dispose()),我不想公开该方法。
这就是尝试查找隐式转换的原因。
另外,我不想跨应用程序使用SomeWrapper。
请提出是否有一些概念/模式来完成这项工作。
感谢您的关注。
没有找到相关结果
已邀请:
3 个回复
细瑞
锯康
缮淳彼誊
这使您能够以不会让其他开发人员感到惊讶的方式来执行约定:
请注意,这仍然很脆弱,因为您不知道
是否实际代表
实现。