c# – 如何将接口的隐式转换写入另一种类型?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何将接口的隐式转换写入另一种类型?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1214字,纯文字阅读大概需要2分钟。
内容图文
![c# – 如何将接口的隐式转换写入另一种类型?](/upload/InfoBanner/zyjiaocheng/763/872095fd4c6445909394b6566fd6cba3.jpg)
我想尝试做类似下面的事情:
public class SomeWrapper : ISomeWrapper{
public static implicit operator ActualRec(ISomeWrapper someWrapper)
{
return ((SomeWrapper)someWrapper).SomeInfo;
}
}
但是这段代码失败了,说:
“参数或返回类型必须是SomeWrapper类型”.
我理解编译正在陈述的问题.但是我需要这种类型的转换,因为在我的应用程序中我使用ISomeWrapper作为变量,存储SomeWrapper实例. (另外,SomeWrapper是唯一实现ISomeWrapper的类).
如果ISomeWrapper接口到我在具体类中知道的类型,有没有办法进行隐式转换?
编辑:
正如所有人所建议的那样,在C#中无法从接口隐式转换.
我需要这样做的原因?我想(隐式地)允许ISomeWrapper的用户调用需要ActualRec作为参数的方法WITHOUT允许访问ISomeWrapper的用户来调用ActualRec的方法/属性.
例如,
如果我包括ISomeWrapper属性ActualRec然后ISomeWrapper的用户将能够调用方法提供ActualRec(喂,someWrapper.ActualRec.Dispose()),我不希望公开.
这就是试图找到一些隐式转换的原因.
另外,我不希望跨应用程序使用SomeWrapper.
请建议是否有一些概念/模式来完成这项工作.
谢谢你的关注.
解决方法:
我想说你的设计有一个缺陷.您正在从界面转换为具体类型,这使得界面的使用毫无意义.接口是一个合同,通过该合同,实现类型将符合提供所需的一组服务.在您的示例中,SomeInfo属性是否未在接口(合同)中定义?如果没有,你为什么要尝试使用界面?您应该使用SomeWrapper作为输入参数本身.
内容总结
以上是互联网集市为您收集整理的c# – 如何将接口的隐式转换写入另一种类型?全部内容,希望文章能够帮你解决c# – 如何将接口的隐式转换写入另一种类型?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。