Как решить проблему конфликта имен классов в C # - PullRequest
0 голосов
/ 14 июня 2019

Я использую сторонний dll, который не использует пространство имен, оно содержит перечисление с именем Speaker.

// Decompiled with JetBrains decompiler
// Type: Speaker
// Assembly: StreamSDK, Version=1.0.6782.19546, Culture=neutral,PublicKeyToken=null
// MVID: 82353EB3-505A-4A47-8EEB-ED74ED4FC9B9
// Assembly location: /Users/haha/test/Assets/_ThirdParty/SteamSDK/Core/XMLSerializer/StreamSDK.dll

public enum Speaker
{
  remote,
  local,
  none,
}

Мой локальный проект также имеет это имя класса в указанном пространстве имен Photon.Voice.Unity;. После того, как я импортирую dll, происходит ошибка, потому что компилятор обрабатывает локальный Speaker как Speaker.

стороннего производителя.

Я уже использую пространство имен в своем локальном проекте:

using Photon.Voice.Unity;

Ошибка происходит в следующих кодах:

private void OnSpeakerCreated(Speaker speaker)
{
    speaker.gameObject.transform.SetParent(this.RemoteVoicesPanel, false);
}

Ошибка:

error CS1061: 'Speaker' does not contain a definition for 'gameObject' and no accessible extension method 'gameObject' accepting a first argument of type 'Speaker' could be found (are you missing a using directive or an assembly reference?)

После добавления полного пространства имен коды передаются.

private void OnSpeakerCreated(Photon.Voice.Unity.Speaker speaker)
{
    speaker.gameObject.transform.SetParent(this.RemoteVoicesPanel, false);
}

Но я не хочу этого делать, я просто хочу запретить использование третьей стороны Speaker в указанных файлах cs или любым другим способом, при котором мне не нужно изменять текущие коды.

1 Ответ

2 голосов
/ 14 июня 2019

Если вам просто лень писать Photon.Voice.Unity.Speaker каждый раз, вы можете создать псевдоним для использования using оператора :

using PhotonSpeaker = Photon.Voice.Unity.Speaker;

Теперь вы можете написать:

private void OnSpeakerCreated(PhotonSpeaker speaker)
{
    speaker.gameObject.transform.SetParent(this.RemoteVoicesPanel, false);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...