apple / apple/unityplugins

Use internal when exposing low-level types like IntPtr

オープン
#97 コメント 0 件 リアクション 0 件 担当者 1 名 @ryzngard が担当を希望しています GitHub で見る
bug
主要言語
C#
スター
982
フォーク
248
平均マージ
6日 12時間
マージ済み PR(30日)
2

説明

**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")]
```

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。