我有一个像这样的对象
public class Simple
{
public string Value
{
get { return GetProperty(); }
}
// different methods, fields, events, etc.
}
可以使用相同的对象替换类 Simple 的实例,但是使用setter?
如何实施......
private object Substitution(object simple)
{
object newSimple;
// implementations
newSimple.Value = "data";
return newSimple;
}
要有这样的东西
public class Simple
{
public string Value { get; set; }
// my methods, fields, events ...
}
我想创建一个类并从SystemObject继承,然后你可以创建不同的动态属性,但是不能这样做:(
或者也许尝试从这个对象继承(如何?)并覆盖属性?
由于
答案 0 :(得分:0)
您无法在运行时更改已加载类型的定义或结构。
您可能会创建一个具有类似属性和字段集的新类型,并添加了属性设置器。但是,在大多数情况下,这将是有限的用途,因为现有代码将无法理解新类型(因为它是运行时生成的),因此仍然会处理现有类型,这将不兼容。
通常,如果您需要某个类型中的运行时可扩展性,还有其他选项,包括使用Dictionary<T,U>
或dynamic
和ExpandoObject
,或其他一些机制来存储“额外”类中的信息在编译时是未知的。
答案 1 :(得分:0)
你总是使用一个只定义属性getter的接口。然后在实现中有一个属性setter?
class Program
{
static void Main(string[] args)
{
IMyClass myA = new ClassA{ Property = "Class A" };
Console.WriteLine(myA.Property);
// can't do this
// myA.Property = "New Property";
// can do this
(myA as ClassA).Property = "New Property";
Console.WriteLine(myA.Property);
}
}
interface IMyClass
{
string Property { get; }
}
class ClassA : IMyClass
{
public string Property { get; set; }
}
如果失败,您可以使用显式关键字more info at MSDN
执行用户定义的转化