我已经看到类似的问题被问到并得到了回答,但我仍然在为我的简单实现而苦苦挣扎。我希望能够返回具有不同返回类型的类属性。然后我希望能够在一个集合中互换使用它们。
public ClassInt
{
public int Id { get; set; }
public string MyValue { get; set; }
}
public ClassString
{
public int Id { get; set; }
public int MyValue { get; set; }
}
因此,除了 MyValue 上的返回类型之外,这些类是相同的。这是我到目前为止所做的:
public interface IBaseClass
{
int Id { get; set; }
object Value { get; set; }
}
public abstract class BaseClass <T> : IBaseClass
{
public int Id { get; set; }
public abstract T Value { get; set; }
}
public class ClassInt : BaseClass<int>
{
private int _value;
public override int Value
{
get
{
return _value;
}
set
{
_value = value;
}
}
}
public class ClaseString : BaseClass<string>
{
private string _value;
public override string Value
{
get
{
return String.Format(“Hello: {0}”, _value);
}
set
{
_value = value;
}
}
}
要显示值:
List<IBaseClass> MyObjects = new List<IBaseClass>();
MyObjects.Add(new ClassString() { Id = 1, Name = "value 1", Value = "F1 String 1" });
MyObjects.Add(new ClassInt() { Id = 2, Name = "value 2", Value = 500 });
IBaseClass f0 = MyObjects[0];
IBaseClass f1 = MyObjects[1];
现在的问题是 f0 和 f1 没有暴露 Value 属性。
任何建议或意见表示赞赏。
谢谢