【发布时间】:2014-04-19 18:00:19
【问题描述】:
我有一个问题,是否可以(如果可以,如何)从Func<T, TResult> 代表内部访问class 成员。
例如,我有以下class:
class NinjaTurtle
{
public string Sound { get; set; }
public Func<string, string> DoNinjaMove { get; set; }
}
现在我想这样做
NinjaTurtle leonardo = new NinjaTurtle();
leonardo.Sound = "swiishhh!";
leonardo.DoNinjaMove = (move) => {
if(move == "katana slash") return leonardo.Sound;
return "zirp zirp zirp";
}
问题是,当我定义回调函数时,如何正确访问属性Sound?从函数外部使用对实例的引用是否可以?当我将对象传递给另一个方法时,这是否仍然有效,或者即使这将是 dll 的一部分,并且我会从 dll 中的函数返回对象 leonardo?它会“幸存”序列化/反序列化吗?
(感谢 Vladimir 和 Lee,这个问题现在更具体到我想知道的内容)。
【问题讨论】:
-
返回 leonardo.Sound; :)
-
让我重新表述一下 ;-)
-
@Dänu,Vladimir 的评论是一个很好的答案。
-
看起来
DoNinjaMove应该是Func<string, string>。