C# 如何使字典返回方法结果? //在某个类中 pprivate Client_Client=new Client(); 公共字典频道=新字典(); 公共类() { Channels.Add(“main”,_client.GetChannel(“channelName”); Channels.Add(“secundary”,_client.GetChannel(“secondChannelName”); } //客户 公共频道GetChannel(字符串channelName) {//返回特定于此客户端的通道。 }

C# 如何使字典返回方法结果? //在某个类中 pprivate Client_Client=new Client(); 公共字典频道=新字典(); 公共类() { Channels.Add(“main”,_client.GetChannel(“channelName”); Channels.Add(“secundary”,_client.GetChannel(“secondChannelName”); } //客户 公共频道GetChannel(字符串channelName) {//返回特定于此客户端的通道。 },c#,dictionary,C#,Dictionary,当我创建SomeClass()时,字典中会充满来自当前\u客户端的Channel对象。GetChannel()返回。它将频道保存到字典中,但我希望它将-method-添加到字典中;并使每次对字典的调用都返回当前\u client.GetChannel()调用时返回的内容 例如,当调用Channels[“main”]时,我希望它为我调用Client.GetChannel(“#channelName”),并返回它返回的任何内容 如何实现这一点?将频道名称存储在字典中: //in SomeClass

当我创建
SomeClass()
时,字典中会充满来自当前
\u客户端的
Channel
对象。GetChannel()
返回。它将
频道
保存到字典中,但我希望它将-method-添加到字典中;并使每次对字典的调用都返回当前
\u client.GetChannel()
调用时返回的内容

例如,当调用
Channels[“main”]
时,我希望它为我调用
Client.GetChannel(“#channelName”)
,并返回它返回的任何内容


如何实现这一点?

将频道名称存储在字典中:

//in SomeClass
pprivate Client _client = new Client();
public Dictionary<string, Channel> Channels = new Dictionary<string, Channel>();

public SomeClass()
{
    Channels.Add("main", _client.GetChannel("#channelName"));
    Channels.Add("secundary", _client.GetChannel("#secondChannelName"));
}

//in Client
public Channel GetChannel(string channelName)
{ //return a channel specific to this Client.
}
如果您是从SomeClass外部执行此操作(因为客户端是私有的),则可以从SomeClass公开一个公共方法来执行相同的操作:

string channelName;
Channels.tryGetValue("main", out channelName);
Channel thisChannel = Client.GetChannel(channelName);
您可以这样做:

// to run it in a different class:
Channel thisChannel = someClassInstance.GetChannelObject("#main");

// in SomeClass:
public Channel GetChannelObject(string channelID) {
    string channelName;
    Channels.tryGetValue(channelID, out channelName);
    Channel thisChannel = Client.GetChannel(channelName);
    return(thisChannel);
}
或:


叫它
Client.GetChannel(Channels[channelName])
等等,我在回复中看到了愚蠢。我只需要让客户可以访问;这是一个解决方案。不管怎样,为了学习,我想要的可能吗?你在寻找“如何用C#编写索引器方法”吗?退房
// to run it in a different class:
Channel thisChannel = someClassInstance.GetChannelObject("#main");

// in SomeClass:
public Channel GetChannelObject(string channelID) {
    string channelName;
    Channels.tryGetValue(channelID, out channelName);
    Channel thisChannel = Client.GetChannel(channelName);
    return(thisChannel);
}
public Dictionary<string, Func<Channel>> Channels
    = new Dictionary<string, Func<Channel>>();

public SomeClass()
{
    Channels.Add("main", () => _client.GetChannel("#channelName"));
    Channels.Add("secundary", () => _client.GetChannel("#secondChannelName"));
}
var main = Channels["main"]();
var main = Channels["main"].Invoke();