【发布时间】:2016-10-12 12:16:23
【问题描述】:
我有一个包含辅助方法的基类,并且我有一些包含一些虚拟方法的派生类。
那么,我想知道如何在基类虚拟方法中使用派生类对象?
派生类
class myclass :baseClass
{
public string id { get; set; }
public string name { get; set; }
}
基类
public abstract class baseClass
{
public virtual object FromStream()
{
string name, type;
List<PropertyInfo> props = new List<PropertyInfo>(typeof(object).GetProperties()); // here I need to use derived class object
foreach (PropertyInfo prop in props)
{
type = prop.PropertyType.ToString();
name = prop.Name;
Console.WriteLine(name + " as "+ type);
}
return null;
}
主要
static void Main(string[] args)
{
var myclass = new myclass();
myclass.FromStream(); // the object that I want to use it
Console.ReadKey();
}
【问题讨论】:
-
“这里我需要使用派生类对象” - 你是什么意思?我怀疑你可能只是想打电话给
GetType().GetProperties()。顺便说一句,即使对于示例代码,遵循 .NET 命名约定也很有帮助 - 并提供 complete 示例代码。 (你的Main方法在一个未声明的类中,x也没有声明......) -
真的不清楚你的最终目标是什么。看来您正在尝试构建某种(反)序列化程序。您是否考虑过使用现有的 API?此外,您可以使用
someInstance.GetType()代替typeof(TypeHere)或泛型。 -
我希望基类是一个通用类,所以我可以将 fromStream 方法与所有派生类一起使用,所以当我使用基类对象在 main 中调用 fromStream 时,我想使用fromStream 方法中的那个对象
标签: c# inheritance abstract-base-class