我知道很多在PHP,但我在asp.net新手.
在asp.net中存在魔术方法,如php?(__ construct(),__ isset()__ get()__ set()__ destruct()等),例如,我如何在asp.net c#中执行此操作:
class foo
{
public $name;
public function __contruct($name){
$this->name = $name;
}
public function getName(){
return $name;
}
}
$test = new Foo("test");
echo $test->getName(); //prints test
Run Code Online (Sandbox Code Playgroud)
感谢帮助!
如果您真的错过了神奇的方法,可以在C#中创建动态基类(假设您使用的是.NET 4.0+):
public abstract class Model : DynamicObject
{
public virtual object __get(string propertyName)
{
return null;
}
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
if ((result = this.__get(binder.Name)) != null)
return true;
return base.TryGetMember(binder, out result);
}
public virtual void __set(string propertyName, object value)
{
}
public override bool TrySetMember(SetMemberBinder binder, object value)
{
this.__set(binder.Name, value);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
创建一个从中派生的新类型,并使用"dynamic"关键字进行实例化:
dynamic myObject = new MyModelType();
myObject.X = 42; // calls __set() in Model
Console.WriteLine(myObject.X); // calls __get() in Model
Run Code Online (Sandbox Code Playgroud)
简而言之,如果您愿意,可以在C#中实现非常类似的行为(请参阅MSDN上的DynamicObject).
| 归档时间: |
|
| 查看次数: |
3299 次 |
| 最近记录: |