Xamarin.Android 용 JmDNS 바인딩 작업을 시작했습니다. 바인딩을 가져올 수 있었지만 코드에서 참조 할 수는 없습니다. https://github.com/ytn3rd/monodroid-bindings/tree/master/JmDNSXamarin.Android JmDNS 바인딩 문제
첫 번째 문제는 참조 할 IDNSListener 클래스가 없다는 것입니다. 그래서 거기에 부분 인터페이스를 추가했습니다. 나는 그것이 필요한 기능을 가지고있다 updateRecord (DNSCache dnsCache, 지금은 DNSEntry 레코드); DNSCache 또는 DNSEntry를 참조 할 수 없다는 불만을 토로하고 댓글을 달았습니다. (DNSCache를 제거한 이유는 무엇입니까?)
내가 수행 한 작업 중 일부가 잘못되었거나 노드를 제거하여 컴파일하려고하는지 확실하지 않습니다. instnace. 다음 오류로 제거하려면이 항목을 추가했습니다.
E : \ 사용자 \ brads_000 문서 GitHub의를 \ \ \ ytn3rd \ monodroid - 바인딩을 \ JmDNS 바인딩 \ \ OBJ \ 디버그 \ 생성 \ SRC \ Javax.Jmdns.Impl.JmDNSImpl.cs (24, 24) 오류 CS0738 : 'Javax.Jmdns.Impl.JmDNSImpl.SubTypeEntry'가 인터페이스 멤버 'Java.Util.IMapEntry.Key'를 구현하지 않습니다. 일치하는 반환 유형이 'Java.Lang.Object'가 아니기 때문에 'Javax.Jmdns.Impl.JmDNsmpl.SubTypeEntry.Key'는 'Java.Util.IMapEntry.Key'를 구현할 수 없습니다. (CS0738) E : \ Users \ brads_000 \ Documents \ GitHub \ ytn3rd \ monodroid-bindings \ JmDNS \ bindings \ obj \ Debug \ generated \ src \ Javax.Jmdns.Impl.JmDNSImpl.cs (24, 24) : 오류 CS0738 : 'Javax.Jmdns.Impl.JmDNSImpl.SubTypeEntry'가 인터페이스 멤버 'Java.Util.IMapEntry.Value'를 구현하지 않습니다. 일치하는 반환 유형이 'Java.Lang.Object'가 아니기 때문에 'Javax.Jmdns.Impl.JmDNSImpl.SubTypeEntry.Value'는 'Java.Util.IMapEntry.Value'를 구현할 수 없습니다. (CS0738) (JmDNS-Bindings)
Java.Util.IMapEntry 클래스의 문제입니다. 올바른 동작은 내 자신의 parital SubEntryType을 만든 다음 문자열 Key 속성을 재정의하는 것이지만 그것을 선택하지 않을 것이라고 생각했습니다. 나의 다음 시도는 이것을하는 것이었다.
java.lang.Object 상위
해당 오류를 해결하는 것입니다,하지만E에 오류 원인이
: \ 사용자 \ brads_000 문서 GitHub의를 \ \ \ ytn3rd \ monodroid (12,12) : 오류 CS1502 : 에 대한 최상의 오버로드 된 메서드 일치 'Android.Runtime.JNIEnv.NewString (문자열) '에 잘못된 인수가 있습니다. (CS1502) (JmDNS-Bind INGS)
static IntPtr n_GetKey (IntPtr jnienv, IntPtr native__this)
{
global::Javax.Jmdns.Impl.JmDNSImpl.SubTypeEntry __this = global::Java.Lang.Object.GetObject<global::Javax.Jmdns.Impl.JmDNSImpl.SubTypeEntry> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
return JNIEnv.NewString (__this.Key);
}
namespace Javax.Jmdns.Impl
{
public partial class SubTypeEntry
{
static IntPtr n_GetKey (IntPtr jnienv, IntPtr native__this)
{
global::Javax.Jmdns.Impl.JmDNSImpl.SubTypeEntry __this = global::Java.Lang.Object.GetObject<global::Javax.Jmdns.Impl.JmDNSImpl.SubTypeEntry> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
return JNIEnv.NewString(__this.Key.ToString());
}
}
}
그러나 다시는,이 새로운 방법을 위로 선택하지 않습니다.
내가 때문에 위와 같은 키/값과 같은 오류를E javax.jmdns.impl.DNSCache을 제거 : \ 사용자 \ brads_000 문서 GitHub의 \ ytn3rd \ monodroid - 바인딩을 \ \ \ JmDNS \ bindings \ obj \ Debug \ generated \ src \ Javax.Jmdns.Impl.DNSCache.cs (95,95) : 오류 CS0508 : 'Javax.Jmdns.Impl.DNSCache.EntrySet()': 반환 유형은 이어야합니다. '시스템 .Collections.ICollection '은 재정의 된 멤버 과 일치합니다.'Java.Util.AbstractMap.EntrySet() '(CS0508) (JmDNS - 바인딩)
나는 듯이 무엇을 비록
System.Collections.ICollection
고정 가지고 벌써 돌아왔다.
공공 재정의 세계 :: System.Collections.Generic.ICollection EntrySet()
어쨌든, 어떤 도움 내가 어려움을 겪고있을 때,이 멋진 도서관을 위로하고 때때로 :
사용중인 JmDNS 및 Xamarin 버전은 무엇입니까? – noobie
Xamarin Studio 5 (빌드 878). Xamarin.Android v4.12.4. jmdns v3.4.1. –