0

所以我使用类似的东西:

...
var o = myclass.o; // o is a property and o is a structure not class
o.modifyInternalParameter(a, b, c); // a, b, c were created somewhere before
myclass.o = o; // as you can see o has getter and setter.
...

如何创建一个功能包装器而不是调用 3 行代码调用一些

func(myclass.o, TypeOfO.modifyInternalParameter, {a, b, c}, returnValueIfmodifyInternalParameterHasOne);

?

4

1 回答 1

0

我会modifyInternalParameter返回自己或创建一个静态方法来为您执行此操作,然后您可以编写如下内容:

(返回自己,嗯,自己的副本,但修改后的副本)
myclass.o = myclass.o.modifyInternalParameter(a, b, c)

(静止的)
myclass.o = ModifyInternalParameters(myclass.o, a, b, c)

因此,您的内部方法可能如下所示:

public MyStruct modifyInternalParameter(object a, object b, object c)
{
    this.A = a;
    this.B = b;
    this.C = c;
    return this;
}

可以用静态版本做类似的事情。

编辑:您还可以在内部为您创建一个扩展方法(或 on 方法myclass):

myclass.ModifyInternalParametersOnO(a, b, c)

您可能在哪里:

public static void ModifyInternalParametersOnO(this MyClass myclass, object a, object b, object c)
{
    var o = myclass.o;
    o.modifyInternalParameters(a, b, c);
    myclass.o = o;
}
于 2012-07-18T13:18:55.147 回答