【发布时间】:2016-04-06 13:16:51
【问题描述】:
我已经包装了 INetFwRule 成员,我已经将属性放在了一个名为 FirewallRule 的自定义类型中,并且为了在执行转换时节省代码的其他部分的时间从INetFwRule 到FirewallRule 我试着写这个隐式转换器:
C#:
public static explicit operator FirewallRule(INetFwRule rule) {
return new FirewallRule {
Action = (FirewallRuleAction)rule.Action,
ApplicationName = rule.ApplicationName,
Description = rule.Description,
// etc...
};
}
Vb.Net(原创):
Public Shared Narrowing Operator CType(ByVal rule As INetFwRule) As FirewallRule
Return New FirewallRule With {
.Action = DirectCast(rule.Action, FirewallRuleAction),
.ApplicationName = rule.ApplicationName,
.Description = rule.Description,
' etc ...
}
End Operator
但是,我在 rule 参数中收到此错误:
转换运算符不能从接口类型转换
有一种方法可以解决这个问题,以便能够编写CType?。
【问题讨论】:
-
@Bjørn-Roger Kringsjå 这说起来容易,但是……呵呵。感谢您的评论!
-
您的问题似乎表明这在 VB 中是可能的,但在 C# 中是不可能的 - 但是在任何一种语言中都无效。
-
@Dave Doknjas 不,我只将代码放在 C# 中,因为如果他们看不到标记语言中的代码,很多人会否决问题......很多人不明白 OP 可能看起来对于 C# 答案,这是唯一的原因,对造成的混乱表示抱歉。感谢您的评论
标签: c# .net vb.net interface com