Ho un'applicazione che consente all'utente di inserire una stringa di testo in un documento PDF. Ho tre diversi modi in cui possono farlo:
-
Utilizza un campo modulo. Quindi hanno quattro proprietà da definire:
- Fornisci nome campo
- fornire l'istanza del campo
- fornisce un offset dell'asse X
- fornisce un offset dell'asse Y
-
Cerca una stringa di testo. Quindi hanno quattro proprietà da definire:
- Fornisci una stringa di testo da cercare
- fornire l'istanza di quella stringa di testo
- fornisce un offset dell'asse X
- fornisce un offset dell'asse Y
-
Definisci coordinate di pagina. Quindi hanno tre proprietà da definire:
- Fornisci il numero di pagina
- fornisce un offset dell'asse X
- fornisce un offset dell'asse Y
Nella mia API, voglio che l'oggetto sia configurato in modo intuitivo in modo che sia chiaro che scelgono uno dei tre diversi metodi e, in base a quello che scelgono, hanno le opzioni per ciascuno.
Nella mia vecchia API, tutte queste opzioni sono raggruppate insieme come una lista di proprietà come questa:
Placement.FormField_FieldName
Placement.FormField_Instance
Placement.SearchText_Text
Placement.SearchText_Instance
Placement.PageCoordinates_PageNumber
Placement.XOffset
Placement.YOffset
Trovo che questo sia un po 'di confusione per lo sviluppatore che utilizza l'API perché non è possibile utilizzare tutte le proprietà insieme.
Utilizzeresti Campo modulo in questo modo:
Placement myPlacement = new Placement();
myPlacement.FormField_FieldName = "MyPdfFormFieldName";
myPlacement.FormField_Instance = ;
myPlacement.XOffset = 0;
myPlacement.YOffset = 0;
O utilizza Ricerca testo in questo modo:
Placement myPlacement = new Placement();
myPlacement.SearchText_Text = "My String Of Text";
myPlacement.FormField_Instance = 1;
myPlacement.XOffset = 0;
myPlacement.YOffset = 0;
O usa Coordinate di pagina in questo modo:
Placement myPlacement = new Placement();
myPlacement.PageCoordinates_PageNumber = 1;
myPlacement.XOffset = 0;
myPlacement.YOffset = 0;
C'è un modo migliore per impostare la classe (o le sottoclassi) per facilitare lo sviluppatore a capire come utilizzare questa funzionalità?