当前位置:编程学习 > C#/ASP.NET >>

|zyciis| 我有两个类,内容都是相同的,只是类名不同,然后我判断是用哪一个类 谁能看看有没有更科学的写法



public class Info
{
    Int32 _ID=0;
    Int32 _Name ="";
    ...  //表示更多
    public Int32 ID
    {
        set {_ID =value;}
        get {retur _ID;}
    }
    public String Name
    {
        set {_Name =value;}
        get {retur _Name;}
    }
    ...  //表示更多
}
public class InfoTemp
{
    Int32 _ID=0;
    Int32 _Name ="";
    ...  //表示更多
    public Int32 ID
    {
        set {_ID =value;}
        get {retur _ID;}
    }
    public String Name
    {
        set {_Name =value;}
        get {retur _Name;}
    }
    ...  //表示更多
}

上面是我的两个类然后以下是我的程序

info info1 = ... //这里取得一个info
infoTemp infoTemp1 = ... //这里取得一个infoTemp
bool valid = .. //这里取得true 或 false
if(valid)
{
    txtID.Text = info1.ID.ToString();
    txtName.Text = info1.Name.Tostring();
    ...  //表示更多
}
else
{
    txtID.Text = infoTemp1.ID.ToString();
    txtName.Text = infoTemp1.Name.Tostring();
    ...  //表示更多

}


如上面这样因为info和infoTemp的结构是一样的
然后比如他们有100个的话那么像上面那样的话都要进行写两次
这样感觉很不方便


有没有更好的写法

谢谢 --------------------编程问答-------------------- 除非代码安装行数计算价钱,我实在没有办法理解得了,干嘛一样的累写几个。

-_-!! --------------------编程问答-------------------- 同意楼上,一样的类最好只有一个。

现在不一样的类都要通过各种复用方式来节省代码,楼主却反其道而行。 --------------------编程问答-------------------- 为什么要写成这样呢,很费解啊,非要的化就继承咯
public class InfoTemp:Info{}

--------------------编程问答-------------------- 本来有价格类
PriceInfo.cs
用来保存商品价格,但现在他要求,在这个商品的价格修改后他还可以返回他最初的价格
所以我就用一个PriceTempInfo.cs来保存他添加时的价格
当他要读取原来的价格的时候就读取PriceTempInfo.cs这个类 --------------------编程问答-------------------- 设计思路一踏乎涂~ --------------------编程问答-------------------- 如果非要照你这样,定义一个接口就是了:
public inte易做图ce Iinfo
{
    Int32 ID{ get;set;}
    String Name{ get;set;}
    ...  //表示更多
}

public class Info:Iinfo
{
    Int32 _ID=0;
    Int32 _Name ="";
    ...  //表示更多
    public Int32 ID
    {
        set {_ID =value;}
        get {retur _ID;}
    }
    public String Name
    {
        set {_Name =value;}
        get {retur _Name;}
    }
    ...  //表示更多
}
public class InfoTemp:Iinfo
{
    Int32 _ID=0;
    Int32 _Name ="";
    ...  //表示更多
    public Int32 ID
    {
        set {_ID =value;}
        get {retur _ID;}
    }
    public String Name
    {
        set {_Name =value;}
        get {retur _Name;}
    }
    ...  //表示更多
}



调用方法:
Iinfo useInfo;

info info1 = ... //这里取得一个info
infoTemp infoTemp1 = ... //这里取得一个infoTemp
bool valid = .. //这里取得true 或 false
if(valid)
{
    useInfo = info1;
}
else
{
    useInfo = infoTemp1;
}
txtID.Text = useInfo.ID.ToString();
txtName.Text = useInfo.Name.Tostring();
...  //表示更多
--------------------编程问答-------------------- UP 
思路最重要
请指点 --------------------编程问答-------------------- 1.价格能有多复杂?还要搞个类...
2.客户要的是两个实例...不是两个类...
3.你根本没有理解OO...一塌糊涂也就难免了... --------------------编程问答-------------------- UP:
我的类是对应数据库的字段
楼上的那我上面的要求的话你会怎么来做呢

环境:
本来有一个表用来保存字段
然后现在客户要求在他不管怎么修改这里面的某一个价格
他都可以查看他原来的价格,而且还可以还可以还原最初的价格
但原来的表数据结构不能改变

要怎么做最科学

谢谢 --------------------编程问答-------------------- Info info = new Info();
            InfoTemp infoTemp = new InfoTemp();
            Type myType = null;
            bool valid = true;
            object obj = null;
            if (valid)
            {
                myType = typeof(Info);
                obj = info;
            }
            else
            {
                myType = typeof(InfoTemp);
                obj = infoTemp;
            }
            object obj = System.Activator.CreateInstance(myType);
            PropertyInfo pi = myType.GetProperty("Name");
            string name = pi.GetValue(obj, null);
            pi = myType.GetProperty("ID");
            int id = Convert.ToInt32(pi.GetValue(obj, null));

以此类推 --------------------编程问答-------------------- 设计一个表就好了:
字段:品名,价格,价格生效时间,价格失效时间
其中主键是:品名,价格失效时间

这样用户就可以查看他原来的价格,而且还可以还可以还原最初的价格 

注:这个结构是SAP里的常用的 --------------------编程问答-------------------- 一个类实例化为两个对象可以吗?
1个是原来的价格,一个是当前的价格 --------------------编程问答-------------------- 不是很理解lz的思路 --------------------编程问答-------------------- 或者给该类分别针对每个价格字段加一个当前价格字段
初始化该类时每个价格和当前价格,修改时只改当前价格字段的值
恢复时用原价格字段值..
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,