apple / apple/unityplugins

Use internal when exposing low-level types like IntPtr

Đang mở
#97 0 bình luận 0 reaction 1 người được giao Được @ryzngard nhận Xem trên GitHub
bug
Ngôn ngữ chính
C#
Star
982
Fork
248
Merge trung bình
6 ngày 12 giờ
Pull request đã merge (30 ngày)
2

Mô tả

**Is your feature request related to a problem? Please describe.**

No, this is about hardening the API.

Exposing low-level types like `IntPtr` as `public` in user-facing code is bad practice for an interop library like this. It causes excessive, unnecessary information and APIs being exposed to users, which could lead to confusion and error-prone code being made with it.

---

**Describe the solution you'd like**

Refactor client-facing low-level members, constructors, etc. to be `internal` (or `protected internal` if necessary). For example, `NSArray` has a `public` constructor with an `IntPtr` parameter. Users do not need to know about this, and makes the API messier for those trying to simply interface with it. Using an `AssemblyInfo.cs` can allow `internal` members to be available to other Apple assemblies without having to expose unnecessary data to users.

---

**Describe alternatives you've considered**

There are none.

---

**Additional context**

https://docs.unity3d.com/2020.1/Documentation/Manual/ScriptCompilationAssemblyDefinitionFiles.html

Example `AssemblyInfo.cs` file:
```csharp
using System.Runtime.CompilerServices;

[assembly: InternalsVisibleTo("Apple.Core.Tests")]
```

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.