Czy można mieć dwie części (tę samą przestrzeń nazw, tę samą nazwę klasy) częściowej klasy w oddzielnych bibliotekach DLL?
c#
dll
partial-classes
Ćwiek
źródło
źródło
Odpowiedzi:
Z MSDN - częściowe klasy i metody :
źródło
Nie. Klasy częściowe są cechą czysto językową. Gdy zestaw jest kompilowany, pliki są łączone w celu utworzenia typu. Nie jest możliwe rozłożenie plików na różne zespoły.
Jednak w zależności od tego, co chcesz zrobić, możesz użyć metod rozszerzających, aby osiągnąć to, czego potrzebujesz.
źródło
Nie, to niemożliwe. Po skompilowaniu zestawu klasa musi zostać zakończona.
źródło
Podczas gdy inne odpowiedzi dostarczają nieprzyjemnego „Nie”, którego nikt, kto wszedł na tę stronę, nie chciał widzieć ani słyszeć, uderzyła mnie inna myśl, o której jeszcze nie wspomniano. Gdyby częściowe klasy były dozwolone we wszystkich zespołach, można by uzyskać dostęp do prywatnych członków istniejących typów, które nie zostały przez niego napisane, co pozwoliłoby mu manipulować nimi w sposób, który nie był zamierzony przez pierwotnego autora, narażając w ten sposób funkcjonalność wszystkich dziedziczących klas też.
Co więcej, te klasy w innych zespołach (i ich dzieciach) musiałyby zostać ponownie skompilowane, aby działały. W związku z tym nie jest logicznie możliwe zezwolenie na podział klasy na różne zestawy.
źródło
Możesz użyć metod rozszerzających, jeśli chcesz dodać metodę do klasy w innej bibliotece dll. Jedyną wadą tej metody jest to, że nie można dodawać metod statycznych.
źródło
Pytanie brzmi, dlaczego chcesz utworzyć częściową klasę w innym zestawie? Możesz zdefiniować abstrakcyjne klasy i interfejsy w zespołach, być może musisz się temu przyjrzeć.
źródło
Prawdopodobnie chcesz po prostu utworzyć klasę Wrapper w swojej własnej bibliotece, wokół klasy w bibliotece trzeciej części. Następnie dodaj dowolną funkcjonalność do klasy opakowania.
źródło