Народ, кто работал с динамической генерацией кода, подскажите плз! Надо сделать "сборный" класс, который содержит свойства для получения значений свойств из заданных классов.
Например есть такое:
internal class A
{
private Dictionary<string, object> _dictionary = new Dictionary<string, object>();
// В эту коллекцию где-нить заносятся данные. типа того:
// _dictionary["number"] = 1;
// _dictionary["str"] = "some string";
public string SomeProperty
{
get { return "Hello, world!"; }
}
public Dictionary<string,object> SomeOtherProperty
{
get { return _dictionary; }
}
}
Как сгенерировать класс B по классу A наподобие этого:
internal class B
{
private A _a;
public string SomeProperty
{
get { return _a.SomeProperty; }
}
public int number
{
get { return (int)_a.SomeOtherProperty["number"]; }
}
public string str
{
get { return (string)_a.SomeOtherProperty["str"]; }
}
}
Подскажите, плз.
з.ы. Emit'ом пользоваться не очень умею, посиму, ответа "копай в сторону emit" просьба не давать...
Здравствуйте, BKnight, Вы писали:
BK>Народ, кто работал с динамической генерацией кода, подскажите плз! Надо сделать "сборный" класс, который содержит свойства для получения значений свойств из заданных классов.
BK>Например есть такое:
BK>BK>internal class A
BK>{
BK> private Dictionary<string, object> _dictionary = new Dictionary<string, object>();
BK> // В эту коллекцию где-нить заносятся данные. типа того:
BK> // _dictionary["number"] = 1;
BK> // _dictionary["str"] = "some string";
BK> public string SomeProperty
BK> {
BK> get { return "Hello, world!"; }
BK> }
BK> public Dictionary<string,object> SomeOtherProperty
BK> {
BK> get { return _dictionary; }
BK> }
BK>}
BK>
BK>Как сгенерировать класс B по классу A наподобие этого:
BK>BK>internal class B
BK>{
BK> private A _a;
BK> public string SomeProperty
BK> {
BK> get { return _a.SomeProperty; }
BK> }
BK>
BK> public int number
BK> {
BK> get { return (int)_a.SomeOtherProperty["number"]; }
BK> }
BK> public string str
BK> {
BK> get { return (string)_a.SomeOtherProperty["str"]; }
BK> }
BK>}
BK>
BK>Подскажите, плз.
BK>з.ы. Emit'ом пользоваться не очень умею, посиму, ответа "копай в сторону emit" просьба не давать...
Посмотри класс CSharpCodeProvider. Он создает сборки на основе текста
Здравствуйте, Плюш, Вы писали:
П>Посмотри класс CSharpCodeProvider. Он создает сборки на основе текста
Помни об
оверквотинге и
мерах к нарушителям
Здравствуйте, _FRED_, Вы писали:
_FR>Помни об оверквотинге и мерах к нарушителям
Спасибо.
В предь буду внимательнее и осторожнее