A, o takie coś chodzi... Ambitne podejście do tematu
Niestety, w tej kwestii nie pomogę, bo pierwszy raz widzę coś takiego na oczy.
Ja do swoich projektów na potrzeby walidacji danych wprowadzanych przez użytkownika do kontrolek opracowałem własną klasę - zwykła klasa z kilkoma publicznymi metodami, do których przekazuję jako parametry: kontrolkę, error providera (z którego zwykle korzystam do sygnalizacji że coś jest nie tak) oraz ewentualne zakresy walidacji. Np. taka metoda sprawdza mi, czy w kontrolce jest liczba typu integer z wybranego zakresu od... od...:
Zaloguj się, aby zobaczyć kod
Cała logika jest zaszyta w metodzie - sama sprawdza typ kontrolki, wypakowuje z niej wartość, za pomocą TryParse sprawdza poprawność typu, a potem resztę wg założeń, np. zakres. Jeżeli coś pójdzie nie tak - ustawia stosowny komunikat error providera i zwraca false.
Podobnych metod mam kilka, do najczęściej spotykanej walidacji (string o określonej długości, prawidłowa liczba z przecinkiem, data, zakres dat od... do...) - i przed zatwierdzeniem dokumentu wywołuję metodę, która wykorzystując wspomnianą klasę sprawdza, czy poszczególne kontrolki zawierają prawidłowe typy danych. Jeżeli tak - puszcza dalej, jeżeli nie - każe poprawić źle wprowadzone dane. Jak potrzebuję jakąś niestandardową walidację (np. czy liczba A jest wielokrotnością liczby B), po prostu dopisuję kolejną metodę. Myślę że za jakiś czas nazbieram tych metod tyle, że da się to przekompilować na dll'kę i załączać ją do nowych projektów, póki co to po prostu osobna klasa.
Ad. 2. Kod dll'ki też można śledzić podczas tworzenia, tylko musisz utworzyć sobie np. dodatkową formę, która będzie wywoływała funkcje z tej dll'ki po kliknięciu przycisku. Najprościej chyba wstawić ją do tego samego projektu co tworzona dll'ka (oczywiście projekt musi być wtedy typu Windows Application albo Console Application), i tak naprawdę tworzysz zwykłą klasę, nie dll'kę. Jak już wszystko gra i jest gotowa - usuwasz formę i wszystkie inne niepotrzebne referencje, zmieniasz typ projektu na ClassLibrary i kompilujesz do czystej dll'ki.
Drugi sposób, to w danym Solution utworzyć dwa projekty:
- pierwszy typu ClassLibrary z dll'ką,
- drugi typu WinForms lub Console Application do testowania.
W tym drugim projekcie musisz dodać referencję do projektu dll'ki (zakładka Projects przy dodawaniu referencji), podobnie jak dodajesz referencje do zewnętrznych bibliotek. Projekt z formą lub konsolą musisz ustawić jako startowy, ewentualnie pogrzebać z opcjami w Properties dla Solution (w drzewku masz tam Startup Project) tak, żeby po wciśnięciu F5 uruchamiało formę / konsolę. VS jest na tyle sprytny, że jak ustawisz brakepointa w projekcie dll'ki, to przechwyci go, nawet jeśli został on wywołany z innego projektu.
A, i zarówno dll'ka jak i forma/konsola testowa, najlepiej żeby miały ustawiony tryb Debug. Potem, jak już kompilujesz finalnie dll'kę, możesz zmienić jej tryb na Release.