转换对象(具有参数的类)

时间:2017-02-22 15:35:03

标签: .net .net-core

Dot Net Core项目我正在努力,但我欢迎Dot Net Framework的投入,为Dot Net Core带来创意。

类对象的转换就像这样。

public class Foo
{
    public string Value1 { get; set; }
    public string Value2 { get; set; }
}

Foo foo1 = new Foo() { Value1 = "1", Value2 = "2" };
var foo2 = (object)foo1;
var foo3 = (Foo)foo2;

那可行,但是有构造函数的类怎么样? (在这种情况下,假设我有20个webservice类,我可以通过消除太多的声明和脚本来缩短脚本)。

可以这样做吗?只是想知道因为在路上,当我们不断添加更多的webservice类时 - 它变得不可持续。

public class Foo1
{
   public Foo(string value1, string value2)
   {
   }
   public void Method1()
   {
   }
}
public class Foo2
{
   public Foo(string value1, string value2)
   {
   }
   public void Method2()
   {
   }
}
//public class Example
//{
    object foo;
    var foo1 = new Foo1("1","2");
    var foo2 = new Foo2("1","2");

    foo = (Foo1)foo1;
    foo.Method1();

    foo = (Foo2)foo2;
    foo.Method2();
//}

1 个答案:

答案 0 :(得分:1)

不,你不能这样做,因为那两个foos是不同的对象。如果您有相同的界面,可以这样做。

    public interface IFoo
    {

    }

    public class Foo1 : IFoo
    {
        public Foo1(string v1, string v2)
        {

        }


        public void Method1()
        {

        }

    }

    public class Foo2 : IFoo
    {
        public Foo2(string v1, string v2)
        {

        }

        public void Method2()
        {

        }


    }


    public class test
    {
       public void TestFoo()
       {
                Foo1 foo1 = new Foo1("test", "test2");
                    Foo2 foo2 = new Foo2("test1", "test2");
                    IFoo foo = foo2;
                   ((Foo2)foo).Method2();
      }
   }