2012-09-05 3 views
2

Je suis en train de réaliser un projet dans Application Web ASP.NET. Je ne peux pas convertir un objet en interface. Ceci est mon code:impossible de convertir le type Exam_Mapper en type IMapper

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

Dans l'application Windows Forms, je n'ai aucun problème. également le code ci-dessous renvoie la valeur null:

Imapper EM = obj as Imapper; 
+1

Peut-être que le type 'myTypeObj' n'implémente pas' Imapper'? – sloth

Répondre

2

Votre Exam_Mapper type doit mettre en œuvre IMapper pour que le code fonctionne. Ce n'est apparemment pas le cas. Soit cela ou vous avez deux types, IMapper et Imapper (vous utilisez les deux noms dans votre question, faute de frappe possible), et vous confondez les deux.

Mise à jour essayer cet exemple simple, et voir si cela fonctionne:

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

Maintenant, comparez votre situation. Quelle est la différence?

+0

Merci pour votre réponse. mais dans mon projet Exam_Mapper implémente Imapper et Imapper dans tout le projet est Imapper pas IMapper. –

+0

Étape par étape avec un débogueur et voir où votre code ne fait pas ce que vous attendez. Par exemple. myTypeObj obtient-il votre type? Est-ce que obj est une instance ou null? –

+0

yes.myTypeObj obtient le type et obj est une instance.but quand j'utilise Imapper EM = (Imapper) obj, cette erreur apparaît, "incapable de lancer obj à Imapper" et quand j'utilise "Imapper EM = obj comme Imapper;" EM renvoie une valeur nulle. –

Questions connexes