Есть ли в C # простой способ создания теневого типа? - PullRequest
0 голосов
/ 26 октября 2019

Учитывая object, это может быть что-то вроде

[TypeIdentifier("foo")]
public class Foo
{
    public string Thingy { get; }

    public int Blah { get; }

    pulic Foo(Thingy thingy, Blah blah)
    {
        this.Thingy = thingy ?? throw new ArgumentNullException(thingy);
        this.Blah = blah ?? throw new ArgumentNullException(blah);
    }
}

Я хочу, чтобы во время выполнения генерировать тип типа

public class FooShadow_ec3dddf4
{
    public string Thingy { get; }

    public int Blah { get; }

    public string TypeId { get => "foo"; }

    pulic FooShadow_ec3dddf4(Thingy thingy, Blah blah)
    {
        this.Thingy = thingy ?? throw new ArgumentNullException(thingy);
        this.Blah = blah ?? throw new ArgumentNullException(blah);
    }
}

и фактически генерировать экземпляр этого типа с помощьюодинаковые значения свойств для Thingy и Blah.

Impl:

public static object CreateTypedShadow(this object obj)
{
   // ... 
} 

Использование:

var shadow = obj.CreateTypedShadow();

Я знаю, что это возможно при использовании таких функций, как TypeBuilder но довольно сложно, поэтому мне интересно, есть ли ярлык для этого точного сценария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...