2012-09-05 60 views
2

我正在做一个项目,在ASP.NET Web应用程序中。我无法将对象转换为接口。这是我的代码:无法将类型的Exam_Mapper投射到IMapper类型

str2 = myXmlTextReader.ReadInnerXml(); 
Type myTypeObj = testAssembly.GetType(str2); 
Object obj = Activator.CreateInstance(myTypeObj); 
Imapper EM = (Imapper)obj; 

在Windows窗体应用程序中,我没有任何问题。还有下面的代码返回空值:

Imapper EM = obj as Imapper; 
+1

也许'myTypeObj'类型只是不实现'Imapper'? – sloth

回答

2

Exam_Mapper类型需要为了工作代码来实现IMapper。它显然没有。无论是你还是你有两种类型,IMapperImapper(你在你的问题中使用了两个名字;可能的错字),而你却混淆了两者。

更新试试这个简单的例子,看看它是否工作:

interface ITest { } 
class Test : ITest { } 
//in a method 
Object obj = new Test(); 
ITest test = (ITest)obj; 

现在比较您的情况。有什么不同?

+0

谢谢你的回答。但在我的项目中Exam_Mapper实现了Imapper,并且Imapper在所有项目中都是Imapper no IMapper。 –

+0

使用调试器逐步完成,看看你的代码不在做你期望的。例如。是myTypeObj获取你的类型? obj是一个实例还是null? –

+0

yes.myTypeObj获取类型,而obj是一个实例,但是当我使用Imapper EM =(Imapper)obj;出现此错误,“无法将obj转换为Imapper”,以及当我使用“Imapper EM = obj作为Imapper;”时EM返回空值。 –

相关问题