Skip to content

Use internal when exposing low-level types like IntPtr #97

@WilliamMorrant

Description

@WilliamMorrant

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<T> 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:

using System.Runtime.CompilerServices;

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions