Доступно багато вихідного коду .NET, і значна частина є відкритим кодом, хоча і за різними ліцензіями. Ще інший код доступний, але лише для довідкових цілей і не може бути використаний у вашому коді.
Враховуючи, що заявлена мета:
Я хотів би збільшити цю межу для складної існуючої програми, яка не може досягти цієї межі. Я не хочу змінювати інтерфейс типу. Я не впевнений, що міг би змінити інтерфейс цього типу, не вводячи тонких помилок у весь код, який повинен був би бути змінений в результаті.
якщо наміром є оновлення поточного типу Ієрархії, то незалежно від того, чи є код Open Source не має значення, оскільки навіть якщо він є, ви ніколи не зможете внести жодних змін у загальну систему: навіть якби ви могли замінити Асамблею в SQL Server, ви не зможете підписати його тим самим сертифікатом / приватним ключем, а значить, система не буде використовуватись.
Однак ви можете створити свій власний визначений користувачем тип SQLCLR (UDT), щоб забезпечити бажану функціональність.
Однак , як це стосується отримання кращого розуміння .NET Framework:
Ви можете переглянути вихідний код більшості матеріалів тут: https://github.com/Microsoft/referencesource
та ще більше матеріалів тут: https://github.com/dotnet/corefx
Обидва вищезазначені сховища є відкритим кодом та керуються здебільшого ліцензією MIT, хоча вам потрібно переглянути інформацію про ліцензування у кожному місці, а іноді й у різних папках.
Багато решти коду можна знайти тут: http://referencesource.microsoft.com/
Код, знайдений у ReferenceSource.Microsoft.com (посилання безпосередньо вище), який також не зустрічається на перших двох посиланнях (які є відкритим кодом), не є відкритим кодом, а натомість керується ліцензією МІКРОСОФТИЧНОГО РЕФЕРЕНЦІЙНОГО ЛІЦЕНЗІЇ (MS-RSL) , відповідний розділ (злегка відредагований, щоб поставити визначення "довідкове використання" безпосередньо після використання цієї фрази):
ліцензіар надає вам непередавальну, неексклюзивну, всесвітню ліцензійну авторську ліцензію на відтворення програмного забезпечення для довідкового використання: використання програмного забезпечення у вашій компанії в якості посилання, у формі лише для читання, з єдиною метою налагодження ваших продуктів, підтримання вашої продукції або підвищення сумісності ваших продуктів із програмним забезпеченням, а також виключає право на розповсюдження програмного забезпечення за межами вашої компанії.
Однак виявляється, що Microsoft.SqlServer.*
простір імен недоступний ні в одному з цих місць. Що означає, що проста відповідь на запитання: "чи є HierarchyID Open Source?" є: Ні .
Якщо бажання бачити вихідний код, тоді вам потрібно буде відкрити DLL - Microsoft.SqlServer.Types.dll - декомпілятором. АЛЕ, є можливі юридичні та / або етичні питання, з якими потрібно вирішити. Це є власний код таким чином , є два основних моменти , які слід враховувати:
як зазначено в ліцензійній угоді з кінцевим користувачем SQL Server (EULA) (і як зазначено в @ Втома в відповідь ), ви можете тільки « перепроектувати, декомпілювати або демонтує » не надається код « тільки в тій мірі , в якій застосовується закон прямо дозволяє » . Це означає, що для деяких людей це цілком законно, а для інших - не так вже й багато. Тож ви можете звернутися до місцевого юриста з інтелектуальної власності.
якщо вам законно декомпілювати, наміри юридичної мови, плюс той факт, що якийсь вихідний код надається (як пов’язано вгорі), але цей конкретний код не є, безумовно, означає, що бажання широкої громадськості не бачити або мати цей код. Отже, законним для декомпіляції не слід сприймати те, що він також є законним для копіювання, але тим більше, що він може бути використаний як еталон (тобто для налагодження тощо).