使用属性和方法动态访问类变量

时间:2013-06-07 04:25:25

标签: c# asp.net

我有自己的数据类型用于数据库,该数据库具有各种属性来操作值,例如:

 First: original value
 IsNull: is the current state null (no value in Data)
 IsFirstNull: was the initial state of the object null
 Changed: has the value changed since the initial value was set.
 SetNull(): set the object to null
 SetFirstNull: set the initial value to null
 Reset: set values all to original settings.

每个对象都有这些。每种类型的标准变量都有一个对象,例如:

 int - IntType
 string - StringType
 bool - BoolType

我设置这些类型来处理从表中读取的每个变量的不同状态以及处理空值。在最初读取值时,总是很难判断值是否为null或者是否为null,因此我知道如何将其写回或者值是否已更改。有时您需要知道从表中读取数据时原始值是什么。

所以我只使用这些来自我从表中读取的数据,这样我就可以跟踪我最初获得的值,包括空值,跟踪更改以及重置为原始值。

我希望能够通过属性访问数据,所以我将它设置为:

 public class LoginDTO
    {
        public IntType loginID = new IntType();
        public StringType userName = new StringType();

        #region Properties

        public object LoginID
        {
            get
            {
                object value = null;
                return NullHandler.SetDbObjectValueFromValue(loginID, ref value);
            }
            set
            {
                NullHandler.GetValueFromDbObject(value, ref loginID);
            }
        }

        public object UserName
        {
            get
            {
                object value = null;
                return NullHandler.SetDbObjectValueFromValue(userName, ref value);
            }
            set
            {
                NullHandler.GetValueFromDbObject(value, ref userName);
            }
       } 

要访问数据,我可以执行类似

的操作
 loginDto.UserName

但是为了访问(设置或获取)IsNull属性,我不能真正为每个变量使用属性。

通常,访问权限类似于:

If( loginDto.IsNull)...

or 

loginDto.SetNull();

但是在一个类中,可以有许多来自表的变量,一个Person表可以有20或30个字段,因此这些字段有20或30个字段和20或30个属性。

我正在考虑在类中设置一个方法,我将传递变量的名称,如:

SetNull(“loginDto”)并以某种方式能够设置loginDto变量的方法。

但不确定如何访问变量以更改每个变量的IsNull属性。

我如何传递文字(即SetNull(“loginID”)或SetNull(“userName”)),以便该方法知道要设置哪个变量?

或者有更好的方法吗?

我正在考虑废弃整个属性的想法,只是设置每个变量并直接访问它们,因为已经在DataType类中设置了propterties和方法。只是通常最好使用属性从外部访问类变量。

谢谢,

汤姆

0 个答案:

没有答案