2017-02-22 25 views
0

Проект 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

Я прочитал этот вопрос 3 раза в настоящее время, но до сих пор не понимаю, что вы просите ... – DavidG

+0

Зачем вам нужно, чтобы назначить их к 'object' перед вызовом методов? – crashmstr

+0

Программисты на моей работе, очень влияют и исходный код тяжелый интерфейс и аннотация. Только такие люди, как они, поймут это. Или лучшая аналогия походила бы на объяснение Исчисления 4 для 1-го класса, которые понимают только Дополнение и Подведение. – fletchsod

ответ

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(); 
     } 
    } 
+0

Я понимаю, что вы имеете в виду сейчас. Это имеет смысл. – fletchsod