Skip to content

Navigation Menu

Sign in
Sign up

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

Open
Assignees
Labels

Description

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    AltStyle によって変換されたページ (->オリジナル) /