以下の内容はhttps://baba-s.hatenablog.com/entry/2021/10/27/140000より取得しました。


【Unity】The predefined type 'System.Runtime.CompilerServices.isExternalinit must be defined or imported in order to declare init-only setter.

はじめに

sealed record Character( int Id, string Name );

Unity 2021.2 でレコード型を使おうとしたら

The predefined type 'System.Runtime.CompilerServices.isExternalinit 
must be defined or imported in order to declare init-only setter.

f:id:baba_s:20211027140640p:plain

Predefined type 'System.Runtime.CompilerServices.IsExternalInit' 
is not defined or imported

f:id:baba_s:20211027140713p:plain

これらのエラーが発生した

解決方法

using System.ComponentModel;

namespace System.Runtime.CompilerServices
{
    [EditorBrowsable(EditorBrowsableState.Never)]
    internal class IsExternalInit{}
}

上記のコードをプロジェクトに追加したらエラーが発生しなくなって

using UnityEngine;

sealed record Character( int Id, string Name );

public sealed class Example : MonoBehaviour
{
    private void Start()
    {
        var character = new Character( 25, "ピカチュウ" );
        Debug.Log( character.Id );
        Debug.Log( character.Name );
    }
}

レコード型を正常に使えた

参考サイト様




以上の内容はhttps://baba-s.hatenablog.com/entry/2021/10/27/140000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14