apple / apple/unityplugins

Use internal when exposing low-level types like IntPtr

Abierto
#97 0 comentarios 0 reacciones 1 asignado Reclamado por @ryzngard Ver en GitHub
bug
Lenguaje dominante
C#
Estrellas
982
Forks
248
Merge medio
6 d 12 h
PR fusionados (30 d)
2

Descripción

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

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.