如何通过传递不同的类对象来重用方法?我有2个不同的类,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);
}
答案 0 :(得分:2)
我不确定你为什么要这样,因为你没有在testClass
任何地方使用ProcessMessage
参数。但是你可以使用泛型方法将任何类型的类传递给你的方法: / p>
public static void ProcessMessage<T>(string classText, T testClass)
where T : class
{
Console.WriteLine("ClassText:{0}", classText);
}
另一种方法是为ClassOne
和ClassTwo
创建公共接口或基类。并更改方法:
public static void ProcessMessage(string classText, CommonInterface testClass)
{
Console.WriteLine("ClassText:{0}", classText);
}
答案 1 :(得分:1)
可以使用泛型,但像Prerak 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);
}
}
答案 2 :(得分: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);
}
}