C#中的Overload =运算符或在赋值之后和之前触发事件的替代方法?

Moh*_*kar 2 .net c# vb.net c#-3.0 c#-4.0

我正在尝试创建自己的数据类型.
所以我从微软的基础示例开始DynamicDictionary.

代码是:http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.aspx

我的类型的主要部分

public class myDynType : System.Dynamic.DynamicObject
{
    ....
}
Run Code Online (Sandbox Code Playgroud)

现在我在我的代码中想要这样的东西:

[MaxAllowedValue(100)]
myDynType  SomeVar;
Run Code Online (Sandbox Code Playgroud)

如您所知,我们不能在C#(=运算符)中重载赋值,那么在赋值之前和之后触发事件的替代方法是什么?

SomeVar = 7.55;   // I want to fire an event right before assignment
//Plus after assignment 
Run Code Online (Sandbox Code Playgroud)

我想检查赋值之前的值,如果它大于100则抛出异常.我想在赋值后检查它以舍入值或修改它.

Tim*_* S. 6

不完全是,但也许你可以用属性做你需要的事情:

myDynType someVar;
[MaxAllowedValue(100)]
myDynType SomeVar
{
    get
    {
        return someVar;
    }
    set
    {
        PreStuff();
        someVar = value;
        PostStuff();
    }
}
Run Code Online (Sandbox Code Playgroud)