如何拥有一些动态类的概念

时间:2015-11-23 10:47:54

标签: c# asp.net

我有两个A类和B类。两个都有大多数属性共同,都有几个不同的字段。现在使用基于某些条件的任一类。使用他们的共同财产。我无法更改使用继承的模式。

例如

public class A
{
    public string field1 { get; set; };
    public string field2 { get; set; };
    public string field3 { get; set; };
    public string field4 { get; set; };
    public string field5 { get; set; };
    public string field6 { get; set; };
    public string field7 { get; set; };
    public string field8 { get; set; };
    public string anotherA1 { get; set; };
    public string anotherA2 { get; set; };
}
public class B
{
    public string field1 { get; set; };
    public string field2 { get; set; };
    public string field3 { get; set; };
    public string field4 { get; set; };
    public string field5 { get; set; };
    public string field6 { get; set; };
    public string field7 { get; set; };
    public string field8 { get; set; };
    public string anotherB1 { get; set; };
    public string anotherB2 { get; set; };
}

A a = new A();
B b = new B();
dynamic d;

if(isDo)
   d= a;
else
   d= b;

string strField = d.field1;
string test = d.field3;

请告诉我实现这一目标的最佳方法。

2 个答案:

答案 0 :(得分:1)

你应该在OOP中学习继承:

public class Common
{
    public string field1 { get; set; };
    public string field2 { get; set; };
    public string field3 { get; set; };
    public string field4 { get; set; };
    public string field5 { get; set; };
    public string field6 { get; set; };
    public string field7 { get; set; };
    public string field8 { get; set; };
}
public class A : Common
{
    public string anotherA1 { get; set; };
    public string anotherA2 { get; set; };
}
public class B : Common
{
    public string anotherB1 { get; set; };
    public string anotherB2 { get; set; };
}

A a = new A();
B b = new B();
Common d;

if(isDo)
   d= a;
else
   d= b;

string strField = d.field1;
string test = d.field3;

答案 1 :(得分:1)

如果你不能自己修改这些类,并且你绝对想拥有一个通用接口,那么你需要编写自己的Adapters