2009-10-02 13 views
11

Aynı ada sahip iki özelliğe sahip ve yalnızca dönüş türünde farklılık gösteren bir tür oluşturmam gerekiyor. Bu türün yansıma yoluyla dinamik olarak yayılması kesinlikle kabul edilebilir. BöyleYalnızca .NET türünde aşırı yüklenen iki özelliği olan bir .NET türünü nasıl verebilirim?

şey:

public TypeA Prop { get; } 
public TypeB Prop { get; } 

Ben C# veya VB.NET veya diğer .NET dillerinden sürü bu özelliği tüketmek olamayacağını anlıyoruz.

Neden bunu yapmak istemediğimi açıklayan cevapları önlemek için, neden ihtiyacım olduğunu açıklamama izin verin: Bir hatayı yeniden üretmem gerekiyor.

Daha ayrıntılı olarak, bir Moq türünde AutoFixture numaralı bir hata var, bazı durumlarda belirli bir özel durum oluşturmasına neden olur. Sorun, Moq tarafından yayınlanan türün, yalnızca dönüş türünde farklılık gösteren 'Mock' adlı iki özellik içermesidir.

Bu senaryoyu bir birim sınamasında yeniden üretmek istiyorum, ancak yalnızca tek bir nedenden ötürü Moq'a bağımlı olmamayı tercih ediyorum, bu nedenle bu davranışı test paketinde dahili olarak yeniden oluşturmak istiyorum.

+6

1 System.String "ayak, sh, nişan oot "malzeme türü :) –

cevap

14

türlerine göre sadece farklılık aynı isimde 2 özelliklere sahip olabilir, ve yapabileceğiniz dinamik türü yayan olmadan:

class Foo 
{ 
    public string X 
    { 
     get { return "Hello world"; } 
    } 
} 

class Bar : Foo 
{ 
    public new int X 
    { 
     get { return 42; } 
    } 
} 

void Main() 
{ 
    foreach(PropertyInfo prop in typeof(Bar).GetProperties()) 
    { 
     Console.WriteLine("{0} : {1}", prop.Name, prop.PropertyType); 
    } 
} 

Bu kodun çıktısı olacak:

X: System.Int32
X: aksi olacağını geçerli nedenler sunmak için

+0

Bu, hatayı yeniden üretmek için ihtiyacım olan şeydi. Çok teşekkürler :) –