基本上我正在尝试用动作做this。我需要做类似的事情,而不是属性,因为至少有一个具体来自另一个类的Action被引用 - 因为你只能添加/删除到Actions而不实际返回它们我需要将它包装在一个添加/删除而不是获取。
interface Whatever
{
Action MyAction { get; }
}
class WhateverConcretion : Whatever
{
Action MyAction
{
get { return SomeLibraryClass.StaticAction; }
}
}
我的项目依赖于特定于平台的库,因此我计划让我的类依赖于包装类的接口,并且每个平台的库都将包装在它自己的类中 - 这一切正常,直到我开始包装Actions。 / p>
答案 0 :(得分:2)
如果您创建了一个包装器,那么将内部类的成员发布到外部世界是正常的,最好使用该成员的相同名称和类型。包装方法很简单:只需创建另一个方法来调用内部类的te方法,传递其参数并返回其值。对于属性相同:创建属性,根据需要使用getter和setter,并调用内部实例属性的getter和setter。
现在对于evens来说,这是一回事。在包装器类中创建一个事件,并将其调用重定向到内部类:
public event Action MyAction
{
add
{
SomeLibraryClass.StaticAction += value;
}
remove
{
SomeLibraryClass.StaticAction -= value;
}
}