Wrappare una classe [C#]

venerdì 29 agosto 2008 - 12.09

liveforever81 Profilo | Junior Member

Salve a tutti!

Mi è stato chiesto di wrappare (io appena sentito 'sto termine: :madai!?:) una classe.

Da quanto ho capito spulciando il web, dove lavoro fanno uso di un prodotto che è proprietario e quindi non hanno i sorgenti.

Ho quindi pensato che wrappare una classe (nello specifico una API di questo prodotto) in questo caso volesse dire implementare in linea di massima la stessa classe, con proprietà e metodi di cui, essende il prodotto proprietario, non posso vederne l'implementazione ma solo la dichiarazione.

In tal modo si avrebbe una implementazione "ad-hoc" di tale API.

E' giusto come ragionamento?

Nello specifico, devo implemente un metodo chiamato Compare (restituisce void) nella API, il quale altro non fa che comparare 2 stringe in ingresso.

Nell'API, il metodo Compare ha 3 campi: stringa1, tipoDiCompare, stringa2.

tipoDiCompare può essere Equal, Greater, Less, NotEquale...etc.

Come lo implementereste voi se il PRIMO ragionamento è esatto?

Grazie! ;-)

Anonimo Profilo | Senior Member

Il ragionamento in linea di massima fila, anch'io wrappare non l'ho mai sentito, ma in linea generale dovrebbe significare quello che hai illustrato tu.
Arrivando alla funzione che hai descritto invece non ci vedo molto senso al fatto che restituisce un void, insomma compari e poi???
Di solito i compare restituiscono un intero dove <0 significa che la stringa1 è in linea alfabetica minore della stringa2, =0 sono uguali, >0 significa che la stringa1 è in linea alfabetica maggiore della stringa2.
Normalmente si fanno due metodi uno che accetta le due stringhe come parametro e restituisce l'intero e l'altro che è un overload e accetta come parametro in più il tipo di comparazione che più che altro indica se è case sensitive.
Poi fai tu...

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Chief Solution Architect

liveforever81 Profilo | Junior Member

effettivamente 'sta cosa trae in inganno anche me...

il metodo dell'API è così definito:

public void AddFilterField(WCLogical Logical, WCField Field, string SubField, WCCompare Compare, object Value)

Dove WCField e WCCompare su due enum (ad ogni valore è associato un intero).


Un esempio di tale metodo:

worklistCriteria.AddFilterField(SourceCode.Workflow.Client.WCLogical.And, SourceCode.Workflow.Client.WCField.ProcessData,
"Department", SourceCode.Workflow.Client.WCCompare.Equal, "HR");

Anonimo Profilo | Senior Member

Ma di fatto quando tu lanci quel metodo, cosa succede, cosa fa di fatto la funzione?

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Chief Solution Architect

liveforever81 Profilo | Junior Member

...ti tira giù da una tabella (Worklist) una lista di WorklistItem filtrati con quei criteri di filtraggio

Anonimo Profilo | Senior Member

Dovrebbe abbastanza fare a caso tuo, forse anzi è fin troppo

public void function (DataTable source, string criteria) { DataTable result = new DataTable(); foreach (DataRow dr in source.Select(criteria)) result.Add(dr); source = result; }

fammi sapere.

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Chief Solution Architect
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5