70 messaggi dal 02 settembre 2003
Ciao a tutti ho il seguente scenario

1) Una classe che espone un Intefaccio Protocol
using System;

namespace ProtocolLib
{
/// <summary>
/// Protocollo generico
/// </summary>
public interface Protocol
{
String getProtocolID();
}
}

2) Una classe che la implementa
using System;
using System.Data.SqlClient ;
using ProtocolLib;

namespace ProtocolLib
{
/// <summary>
/// Descrizione di riepilogo per transmittalProtocol.
/// </summary>
public class TransmittalProtocol : Protocol
{
public TransmittalProtocol()
{
}

public String getProtocolID()
{ return "protocollo";}

3) Una classfactory che la richiama
using System;
using System.Reflection;

namespace ProtocolLib
{
/// <summary>
/// Descrizione di riepilogo per ProtocolFactory.
/// </summary>
public class ProtocolFactory
{
public ProtocolFactory()
{
}

public static Protocol createProtocol( String libName, String protocolName )
{
Assembly a = Assembly.LoadFrom(libName);
Type thisType = a.GetType( protocolName );
ProtocolLib.Protocol p = (ProtocolLib.Protocol)Activator.CreateInstance(thisType);
return p;

}
}
}


Ebbene se la classfactory la utilizzo da un progetto console funziona perfettamente...se la richiamo dalla mia webpart per sharepoint mi da
Specified cast is not valid.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidCastException: Specified cast is not valid.

Source Error:


Line 17: Assembly a = Assembly.LoadFrom(libName);
Line 18: Type thisType = a.GetType( protocolName );
Line 19: ProtocolLib.Protocol p = (ProtocolLib.Protocol)Activator.CreateInstance(thisType);
Line 20: return p;
Line 21:



La chiamata è la seguente (sia nella console che nella webpart)

Protocol p = ProtocolFactory.createProtocol(libName,className);
return p.getProtocolID();


Cosa cambia tra i due ambienti ovvero perchè non mi funziona sotto web?

L'ambiente è
Window2003 Srv Standard
SPPS 2003 sp1

Ciao
provato a inserire dei punti di interruzione per vedere il tipo restituito? da a.GetType?

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
70 messaggi dal 02 settembre 2003
Si certo, infatti restituisce tutto bene...ma poi non riesce a fare il return.

Cmq spostando la classe TransmittalProtocol all'interno del progetto chiamante la ClassFactory funziona perfettamente. E' come se ci siano troppi Protocol type in giro e non riesce a prendere quello giusto.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.