Предположим, у вас есть два класса, как в примере ниже.
Как бы вы изменили SplitObject таким образом, чтобы он всегда возвращал объект типа t, например, в Main (), где он должен возвращать объекттипа DerivedClass?
Я предполагаю, что решение будет включать отражение?Я еще ничего не узнал об отражении, поэтому я не знаю, как это будет работать.
public class BaseClass
{
float _foo;
public BaseClass(float foo){_foo = foo}
public BaseClass SplitObject()
{
Type t = GetType();
// Do something with t
_foo = _foo/2f;
return new BaseClass(_foo); // I want to construct an
// object of type t instead
// of type BaseClass
}
}
public class DerivedClass : BaseClass
{
public DerivedClass(float foo) : base(foo){}
}
class Program
{
static void Main()
{
BaseClass foo = new DerivedClass(1f);
BaseClass bar = foo.SplitObject(); // should return a DerivedObject
}
}