Çok sayıda .NET kaynak kodu mevcuttur ve çeşitli lisanslar altında olsa da, çoğu Açık Kaynak'tır. Yine de başka kodlar mevcuttur, ancak yalnızca referans amaçlıdır ve kodunuzda kullanılamaz.
Belirtilen hedefin:
Bu sınıra ulaşmak zorunda karmaşık bir uygulama için bu sınırı artırmak istiyorum. Yazının arayüzünü değiştirmek istemiyorum. Sonuç olarak değiştirilmesi gereken tüm kod içine ince hatalar girmeden türü arabirimi değiştirerek çekebilir emin değilim.
niyet, mevcut Hiyerarşi türünü güncellemekse, kodun Açık Kaynak olup olmadığı önemsizdir, çünkü öyle olsa bile, genel sistemde hiçbir zaman değişiklik yapamazsınız: SQL Server, aynı Sertifika / Özel Anahtar ile imzalayamazsınız ve bu nedenle sistem tarafından kullanılmaz.
Ancak, istediğiniz işlevselliği sağlamak için kendi SQLCLR Kullanıcı Tanımlı Tipinizi (UDT) oluşturabilirsiniz.
Yine de , .NET Framework'ü daha iyi anlamakla ilgili:
Çoğu öğenin kaynak kodunu burada görüntüleyebilirsiniz: https://github.com/Microsoft/referencesource
ve daha fazlası burada: https://github.com/dotnet/corefx
Yukarıda belirtilen depoların her ikisi de Açık Kaynak'tır ve emin olmak için her bir konumdaki ve bazen çeşitli klasörlerde bulunan lisans bilgilerini gözden geçirmeniz gerekir.
Kalan kodun birçoğunu burada bulabilirsiniz: http://referencesource.microsoft.com/
ReferenceSource.Microsoft.com adresinde (doğrudan yukarıdaki bağlantı) bulunan ve ilk iki bağlantıda (Açık Kaynak olan) bulunmayan kod Açık Kaynak değildir ve bunun yerine MICROSOFT REFERANS KAYNAK LİSANSI (MS-RSL) tarafından yönetilir. , ilgili bölüm (bu ifadenin kullanımından hemen sonra "referans kullanım" tanımını koymak için hafifçe düzenlenmiştir):
Lisans Veren, referans kullanım amacıyla yazılımı çoğaltmak için devredilemez, münhasır olmayan, dünya çapında, telifsiz bir telif hakkı lisansı verir: yalnızca hata ayıklama amacıyla şirketinizdeki yazılımın referans olarak salt okunur biçimde kullanılması ürünlerinizi, ürünlerinizi korumak veya ürünlerinizin yazılımla birlikte çalışabilirliğini artırmak ve özellikle yazılımı şirketinizin dışına dağıtma hakkını hariç tutar.
Ancak, Microsoft.SqlServer.*
ad alanının bu konumların hiçbirinde kullanılamadığı anlaşılmaktadır . Hangi şu soruya basit bir cevap anlamına gelir: "HierarchyID Açık Kaynak mı?" : Hayır .
Arzu kaynak kodunu görmek için, o zaman DLL - Microsoft.SqlServer.Types.dll - bir decompiler ile açmanız gerekir . AMA, ele alınması gereken yasal ve / veya etik konular vardır. Bu ise dikkate alınması gereken iki ana nokta vardır bu yüzden özel kod:
SQL Server Son Kullanıcı Lisans Sözleşmesi'nde (EULA) belirtildiği gibi (ve @ TomV'nin cevabında belirtildiği gibi ), yalnızca " sağlanan kanunun açıkça izin verdiği ölçüde " sağlanmamış kodu " tersine çevirebilir, kaynak koda dönüştürebilir veya parçalarına ayırabilirsiniz " . Yani bazı insanlar için bunu yapmak tamamen yasaldır, ancak diğer insanlar için çok fazla değil. Yani yerel bir fikri mülkiyet avukatına danışmak isteyebilirsiniz.
eğer yasal dilin amacını, yasal olarak amacını ve yasal olarak bazı kaynak kodlarının sağlanmış olması (üstte bağlantılı olarak), ancak bu özel kod değil, kesinlikle arzunun genel halkın bu kodu görmez veya almazsınız. Dolayısıyla, koda dönüştürmek için yasal olmak, çoğaltmak için yasal olduğu için değil, daha çok referans olarak kullanılabilmesi için (yani hata ayıklama, vb.) Alınmalıdır.