Чи можливо мати дві частини (однаковий простір імен, те саме ім’я класу) до часткового класу в окремих DLL-файлах?
Чи можливо мати дві частини (однаковий простір імен, те саме ім’я класу) до часткового класу в окремих DLL-файлах?
Відповіді:
З MSDN - Часткові класи та методи :
Усі визначення часткового типу, призначені для частини одного типу, повинні бути визначені в одній збірці та в одному модулі (.exe або .dll файл). Часткові визначення не можуть охоплювати декілька модулів.
Ні. Часткові класи - суто мовна особливість. Коли складено збірку, файли поєднуються для створення типу. Неможливо розповсюдити файли на різні збірки.
Однак, залежно від того, що ви хочете зробити, ви можете використовувати методи розширення, щоб досягти того, що вам потрібно.
Ні це неможливо. Коли складання складається, клас потрібно закінчити.
Хоча інші відповіді дають неприємне "Ні", що хто-небудь, що висаджується на цю сторінку, не хотів бачити і не чути, мене вразила інша думка, яка тут ще не згадується. Якщо дозволити часткові класи через асамблеї, можна отримати доступ до приватних членів існуючих типів, які не були написані ним, тим самим дозволяючи йому маніпулювати ними способами, які не були призначені оригінальним автором, тим самим загрожуючи функціональності всіх класів успадковування теж.
Мало того, що ці заняття в інших зборах (та їхні діти) потрібно було б перекомпілювати для того, щоб це працювало. Таким чином, логічно неможливо дозволити розділити клас на різні збірки.
Ви можете використовувати методи розширення, коли ви хочете додати метод до класу в іншому dll. Єдиним недоліком цього методу є те, що ви не можете додати статичні методи.
Питання в тому, чому ви хочете зробити частковий клас в іншій збірці? Ви можете визначати абстрактні класи та інтерфейси на різних складах, можливо, вам потрібно це вивчити.
Напевно, ви просто хочете створити клас Wrapper у власній бібліотеці, навколо класу в бібліотеці 3-ї частини. Потім додайте будь-яку функціональність до класу обгортки.