Xamarin 바인딩 프로젝트에서 JAR 등을 바인딩할 때 Java의 Finaliza를 포함할 때의 대응 방법입니다.

3817 단어 C#Xamarin.Android
Java에서 finalize라는 함수는 "Finalize"라는 특수 함수입니다.파인알리자는 학급 수습을 정리하기 위해 존재하지만, 언제 불려날지 모르고, 불려나지 않는 경우도 있어'적극적으로 무언가를 진행하는 곳'이 아니다.기본적으로 사용을 추천하지 않습니다.
C#에는 동일한 목적을 가진 분석기가 있습니다.C#에서 분석기는 클래스 이름에'~'를 붙여 선언하지만 내부는'Finalize'의 함수 이름으로 변환된다.따라서 Finalize 함수 이름을 사용할 때 다음 경고나 오류가 발생합니다.
  • "void Finalize(") 함수를 만들면 "분석기를 발표하고 싶습니까?"경고를 보내다.
  • "override void Finalize (") 함수를 만들면 Finalize를 다시 쓰지 마십시오. 해체기를 제공해 주십시오.오류가 발생했습니다.
  • 무슨 문제 있어요?
    Xamarin 바인딩 프로젝트에서 JAR에 Finalize가 포함되어 있으면 Java의 "finalize"는 C#의 "Finalize"함수 이름이 되어 오류가 발생합니다.
    본래'자바의finalize라는 함수명을 C#의 분석기로 바꾸고 싶다'는 모습이 있어야 하는데 그렇지 않다.
    Xamarin 바인딩 프로젝트에서 구축 중 오류가 발생하면 "Metadata.xml"을 편집하여 변환 방법을 상세하게 지시하여 오류를 피할 수 있습니다.그렇다면 이번에는 메타데이터.xml을 어떻게 지정할까요?인터넷에서 찾아봤는데 좋은 방법이 없는 것 같아요.
    방안 1. 사라지면 된다는 말
    파인리자를 사용해서는 안 되기 때문에 없애도 문제없다.
    <remove-node path="/api/package[@name='your.package.name']/class[@name='Proper.ClassName']/method[@name='finalize' and count(parameter)=0]" />
    
    방안 2. 강제 변경파
    Java의
    protected final void finalize()
    
    함수 이름
    protected override sealed unsafe void Finalize()
    
    오류로 변환하지만 강제
    unsafe /**/ ~FooIterator()
    
    이런 분석기는대단한 손.
    <attr path="/api/package[@name='com.company.api']/class[@name='FooIterator']/method[@name='finalize']" name="managedName">~FooIterator</attr>
    <attr path="/api/package[@name='com.company.api']/class[@name='FooIterator']/method[@name='finalize']" name="visibility"></attr>
    <attr path="/api/package[@name='com.company.api']/class[@name='FooIterator']/method[@name='finalize']" name="managedReturn">/**/</attr>
    
    방안 3. 스스로 찾은 방법.
    먼저 구축합니다.당연히 잘못이지.오류 목록은 다음과 같습니다.

    오류 일람 창에서 오류가 발생한 곳을 두 번 클릭하여 오류를 표시합니다.

    Finalize 는 함수 이름입니다.적파선은 나에게 "여기가 틀렸다"고 말했다.이 소스 코드를 직접 수정합니다.만약 이 예라면, 예를 들어 이번에는 이벤트급 해석기인데, 함수 이름은 Finalize에서 '~ 이벤트'로 변경되었다.'proted override seald''void'가 필요하지 않으므로 삭제합니다.

    이렇게 수정하면 구축을 선택하면 순조롭게 구축할 수 있습니다.그러나 재구축 또는 청결은 선택할 수 없습니다.'재구성' 을 선택하면 분석기는 원래의 원료 공급기로 돌아간다.
    뭐가 제일 좋아요?
  • 실제로는 방안 1에 문제가 없다.
  • 그러나 원래 있어야 할 자세는 방안2 또는 방안3이다.방안3은 재건하면 오류가 발생하기 때문에 실제 방안2가 가장 적합하다고 생각합니다.
  • 좋은 웹페이지 즐겨찾기