我刚刚意外地发现这似乎有效:
Public Interface Ix
ReadOnly Property TestProp()
End Interface
Public Interface Iy
Property TestProp()
End Interface
Public Sub TestSub
Dim x As Ix = Me.InstantiationNotImportant()
Dim y As Iy = CType(x, Iy)
End Sub
也许我今天写了太多代码,但这对我来说没有意义。我怎么可能将一个界面转换为另一个甚至略有不同的界面?
有什么想法吗?
编辑:看来我确实只是因为编码过多而头脑清醒。经过一点睡眠,世界再次有意义。 :)
答案 0 :(得分:1)
实例化很重要,因为该方法可以生成一个实现两个接口的对象,使得这些代码完全有意义。否则,我不确定。
答案 1 :(得分:1)
像Garry一样,实例化非常重要,因为如果我这样做:
public interface IX { }
public interface IY { }
public class Test : IX { }
以下内容无效。
IX xvar = new Test();
IY yvar = xvar as IY; \\Returns null.
IY yvar = (IY)xvar; \\Throws cast exception.
它运行但是yvar将为null,因为无法进行强制转换,但是如果你声明这样的测试:
public class Test : IX,IY { }
它现在可以工作,因为Test使用两个接口,并且从xvar到Y的对象的转换是有效的。