2012-05-24 49 views
1

我有这样反思,动态。如何用另一个对象替换一个对象?

public class Simple 
{ 
    public string Value 
    { 
     get { return GetProperty(); } 
    } 

    // different methods, fields, events, etc. 
} 

可能的对象具有相同的对象来代替类简单的实例,但与二传?

如何实现......

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,那么你就可以创建不同的动态特性,但可以不做:(

或者也许尝试从这个对象继承(如何?)并覆盖属性?

谢谢

+1

是什么在这里你的目标? –

回答

0

您不能在运行时更改加载类型的定义或结构。

您可能会创建一个新类型,它具有类似的一组属性和字段,并添加了属性设置器。然而,在大多数情况下,这将会被限制使用,因为现有的代码不会理解新的类型(因为它是运行时生成的),所以仍然会使用现有的类型,这是不兼容的。通常,如果需要运行时类型内的运行时扩展性,还可以使用其他选项,包括使用Dictionary<T,U>dynamicExpandoObject或其他一些机制来在编译时未知的类中存储“额外”信息。

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

相关问题