悬赏分:20 浏览:657 次
C#代码如下:
public interface IConfigInfo
{
}
public class A : IConfigInfo
{
}
public class b
{
void bb(IConfigInfo a)
{
Type t = a.GetType();
}
}
|
把a 先转成object试试. 好久没用VB,不记得了 在VB.NET中,接口不能从Object类中获取内容 Dim o As Object = i Dim t As Type = o.GetType 这个估计是编译器问题,在VB里面隐藏了接口的基类,认为接口没有Gettype方法。 所以,只能用Object包装一下在用了 |
|
7个月前 没剑 : TNND胸, Dim t As Type = ctype(a,object).GetType() 不过为什么要这样子呢?有解释的方法吗? |
|
7个月前 沙加 : 这个想象是两种语言下的编译器行为的差异吧. |
|
7个月前 没剑 : 如果你不想转的话你在可以在接口里定义GetType方法,,, --- t-mac.NET 怎么样在接口里定义gettype方法? |
|
7个月前 t-mac.NET : Public Interface IConfig Function [GetType]() As System.Type End Interface Public Class Config Implements IConfig Public Function GetType1() As System.Type Implements IConfig.GetType Return Me.GetType() End Function Public Shared Sub test() Dim config As IConfig Dim type As Type = config.GetType() End Sub End Class 以上代码是1.1的, 由于C#和vb的接口实现是不一样的,在vb中必须带有Implements IConfig.GetType语句,而C#中只要实现类实现了即可,即使是父类的方法也没关系 |
|
7个月前 没剑 : t-mac.NET : 你的想法很不错啊,只是有一个错要修改一下. Public Function GetType1() As System.Type Implements IConfig.GetType Return Me.GetType() End Function --- 这里的:Me.GetType()修改为:MyBase.GetType才可以正常运行 |
|
7个月前 t-mac.NET : to 没剑 不好意思哈,,,我已经2年没用vb了,,疏忽了 |