0

基本上我正在尝试使用 Actions来做到这一点。我需要做类似的事情而不是属性,因为在至少一个混凝土中引用了另一个类的动作 - 因为你只能添加/删除动作而不是实际返回它们我需要将它包装在一个添加/删除而不是获取。

interface Whatever
{
    Action MyAction { get; }
}

class WhateverConcretion : Whatever
{
    Action MyAction
    {
        get { return SomeLibraryClass.StaticAction; }
    }        
}

我的项目依赖于特定于平台的库,因此我计划让我的类依赖于包装类的接口,并且每个平台的库将被包装在它自己的类中——在我开始包装 Actions 之前它工作得很好。

4

1 回答 1

2

如果您创建一个包装器,通常会将内部类的成员发布到外部世界,最好使用该成员的相同名称和类型。包装方法很容易:只需创建另一个调用内部类的方法的方法,传递其参数并返回其值。对于属性相同:创建属性,根据需要使用 getter 和 setter,并调用内部实例属性的 getter 和 setter。

现在对于偶数来说也是一样的。在包装类中创建一个事件并将其调用重定向到内部类:

public event Action MyAction
{
    add 
    { 
         SomeLibraryClass.StaticAction += value;
    }
    remove
    { 
         SomeLibraryClass.StaticAction -= value;
    }
}  
于 2013-05-03T16:34:58.437 回答