Несогласованность по доступности! - C#
Формулировка задачи:
Доброго времени суток!
Столкнулся с такой ошибкой:
CS0051: Несогласованность доступности: доступность типа параметра "UnityClient" ниже доступности метода "World.RemoveClient(UnityClient)"
CS0051: Несогласованность доступности: доступность типа параметра "UnityClient" ниже доступности метода "World.AddClient(UnityClient)"
Вот код:
И:
По форуму полазил, подобных вопросов много, но для себя решения не нашел, прошу помочь исправить ошибку!
using ExitGames.Threading; using System.Collections.Generic; using System.Threading; namespace PhotonLIb { public class World { public static readonly World Instance = new World(); private List<UnityClient> Clients { get; set; } public readonly ReaderWriterLockSlim readWriteLock; public World() { Clients = new List<UnityClient>(); readWriteLock = new ReaderWriterLockSlim(); } public bool IsContain(string name) { using (ReadLock.TryEnter(this.readWriteLock, 1000)) { return Clients.Exists(n => n.CharacterName.Equals(name)); } } public void AddClient(UnityClient client) { using (WriteLock.TryEnter(this.readWriteLock, 1000)) { Clients.Add(client); } } public void RemoveClient(UnityClient client) { using (WriteLock.TryEnter(this.readWriteLock, 1000)) { Clients.Remove(client); } } ~World() { readWriteLock.Dispose(); } } }
using Photon.SocketServer; using PhotonHostRuntimeInterfaces; using ExitGames.Logging; using System.Collections.Generic; using PhotonLIb.Common; using PhotonLIb.Operations; namespace PhotonLIb { class UnityClient : PeerBase { private readonly ILogger Log = LogManager.GetCurrentClassLogger(); public string CharacterName { get; private set; } public UnityClient(IRpcProtocol protocol,IPhotonPeer unmanagedPeer) : base(protocol, unmanagedPeer) { Log.Info("Player connection Ip: " + unmanagedPeer.GetRemoteIP()); } protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail) { World.Instance.RemoveClient(this); Log.Debug("Dsconnected!"); } protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters) { switch (operationRequest.OperationCode) { case (byte)OperationCode.Login: var loginRequest = new Login(Protocol, operationRequest); if (!loginRequest.IsValid) { SendOperationResponse(loginRequest.GetResponse(ErrorCode.InvalidParameters), sendParameters); return; } CharacterName = loginRequest.CharacterName; if(World.Instance.IsContain(CharacterName)) { SendOperationResponse(loginRequest.GetResponse(ErrorCode.NameIsExist), sendParameters); return; } World.Instance.AddClient(this); var response = new OperationResponse(operationRequest.OperationCode); SendOperationResponse(response, sendParameters); Log.Info("user with name: " + CharacterName); break; case 2: if (operationRequest.Parameters.ContainsKey(1)) { Log.Debug("recv: " + operationRequest.Parameters[1]); EventData eventdata = new EventData(1); eventdata.Parameters = new Dictionary<byte, object> { { 1, "response for event" } }; SendEvent(eventdata, sendParameters); } break; default: Log.Debug("Unknown OperationRequest received!:" + operationRequest.OperationCode); break; } } } }
Решение задачи: «Несогласованность по доступности!»
textual
Листинг программы
public class UnityClient : PeerBase
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д