PHP的__call()和__callStatic()函数在c#中的等效函数

n9vozmp4  于 2023-02-03  发布在  PHP
关注(0)|答案(2)|浏览(115)

我最近在努力学习c#。我是新手。在c#中有没有像php中一样的神奇的类似函数的结构。具体地说,在c#中的__call()和__callStatic()函数在php中有什么等价的函数...

p3rjfoxz

p3rjfoxz1#

很抱歉,伙计,但不幸的是,在C#中没有等效的。
我个人希望PHP的神奇方法是在C#中。它将为开发人员提供一把大而漂亮的钥匙,打开全新的各种设计模式。
但是,唉,开发领域的大多数人正试图做相反的事情。试图打击他们认为是“反模式”的设计或模式,并迫使 * 啊哈 * 我的意思是“教育”,我们如何最好地编程。
它有一些优点,但并不总是如此。每个解决方案不应该总是以相同的方式设计。
这种“教育”的一个很好的现代例子是一切都必须是DI(依赖注入)或MVC。任何超出这两个的东西,例如在Web开发中,通常被认为是低劣的。

zz2j4svz

zz2j4svz2#

从DynamicObject继承你的类并重写TryInvokeMember方法。通过下面的例子你将有机会调用不存在的方法作为__call php重载或者访问私有成员。
这里有一个例子

class Api : DynamicObject
        {
            public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
            {
                if ((int)args[0] == 55)
                    result = "Match";
                else
                    result = "No match";
                return true;

                // or return the result of the original method which can be an
                // exception if the method does not exist

                // return base.TryInvokeMember(binder, args, out result);
            }
        }

给定上一个示例,请按如下方式使用它

dynamic api   = new Api();
string result = api.get_account_id(55);

我希望这能帮上忙

相关问题