2014-05-15 35 views
0

如何通過傳遞不同的類對象來重用方法?我有兩個不同的類,ClassOne和ClassTwo,在ProcessMessage方法中我也想通過Class,但是怎麼做? 像這樣// // ProcessMessage(classText,objectTwo);如何通過將不同的類對象傳遞給同一方法來重用方法?

class ClassOne 
{ 
    public string MethodOne() 
    { 
     return ("ClassOne"); 
    } 
} 



class ClassTwo 
{ 
    public string MethodOne() 
    { 
     return ("ClassTwo"); 
    } 
} 


class Program 
{ 
    static void Main() 
    { 
     var objectOne = new ClassOne(); 
     var classText = objectOne.MethodOne(); 
     ProcessMessage(classText, objectOne); 


     var objectTwo = new ClassTwo(); 
     classText = objectTwo.MethodOne(); 
     //ProcessMessage(classText, objectTwo); 

     Console.ReadKey(); 
    } 

    public static void ProcessMessage(string classText, ClassOne testClass) 
    { 
     Console.WriteLine("ClassText:{0}", classText); 
    } 
} 

如果我用這個,我承認知道(正從你們的幫助之後),我該如何使用的TestClass?

贊:var text = testClass.MethodOne();什麼

public static void ProcessMessage(string classText, ClassOne testClass) 
{ 
    Console.WriteLine("ClassText:{0}", classText); 
} 
+2

你爲什麼會這麼做? –

+0

這個例子有點奇怪,我現在看到,我刪除了一些代碼來縮短它! – user3635120

回答

2

我不知道爲什麼你因爲你沒有使用ProcessMessagetestClass參數anywhere.But你可以使用一個通用的方法對任何類型的類傳遞給你的方法要這樣:

public static void ProcessMessage<T>(string classText, T testClass) 
    where T : class 
{ 
    Console.WriteLine("ClassText:{0}", classText); 
} 

另一種替代方法是創建一個公共接口或用於ClassOneClassTwo基類.AND改變方法:

public static void ProcessMessage(string classText, CommonInterface testClass) 
{ 
    Console.WriteLine("ClassText:{0}", classText); 
} 
+1

或者爲這兩個類創建一個接口 –

+0

在使用testclass參數的情況下,但在本例中,我將其刪除以使其更短! – user3635120

+0

偉大的兩個解決方案,謝謝 – user3635120

1

有可能使用泛型,但正如Prera​​k K所說,爲什麼?

class ClassOne 
{ 
    public string MethodOne() 
    { 
     return ("ClassOne"); 
    } 
} 



class ClassTwo 
{ 
    public string MethodOne() 
    { 
     return ("ClassTwo"); 
    } 
} 


class Program 
{ 
    static void Main() 
    { 
     var objectOne = new ClassOne(); 
     var classText = objectOne.MethodOne(); 
     ProcessMessage(classText, objectOne); 


     var objectTwo = new ClassTwo(); 
     classText = objectTwo.MethodOne(); 
     ProcessMessage(classText, objectTwo); 

     Console.ReadKey(); 
    } 

    public static void ProcessMessage<T>(string classText, T testClass) 
    { 
     Console.WriteLine("ClassText:{0}", classText); 
    } 
} 
+1

偉大的作品,謝謝 – user3635120

1

或者你可以創建這樣一個接口:

interface IProcessable { 
    string MethodOne(); 
} 

class ClassOne : IProcessable 
{ 
    public string MethodOne() 
    { 
     return ("ClassOne"); 
    } 
} 

class ClassTwo : IProcessable 
{ 
    public string MethodOne() 
    { 
     return ("ClassTwo"); 
    } 
} 

class Program 
{ 
    static void Main() 
    { 
     IProcessable objectOne = new ClassOne(); 
     var classText = objectOne.MethodOne(); 
     ProcessMessage(classText, objectOne); 

     IProcessable objectTwo = new ClassTwo(); 
     classText = objectTwo.MethodOne(); 
     ProcessMessage(classText, objectTwo); 
     Console.ReadKey(); 
    } 

    public static void ProcessMessage(string classText, IProcessable testClass) 
    { 
     Console.WriteLine("ClassText:{0}", classText); 
    } 
} 
+0

偉大的作品,謝謝 – user3635120

相關問題