Несогласованность по доступности! - 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