小编Fla*_*ash的帖子

如何动态新的匿名类?

在C#3.0中,您可以使用以下语法创建匿名类

var o1 = new { Id = 1, Name = "Foo" };
Run Code Online (Sandbox Code Playgroud)

有没有办法动态地创建这些匿名类到变量?


例:

var o1 = new { Id = 1, Name = "Foo" };
var o2 = new { SQ = 2, Birth = DateTime.Now };
Run Code Online (Sandbox Code Playgroud)

动态创建示例:

var o1 = DynamicNewAnonymous(new NameValuePair("Id", 1), new NameValuePair("Name", "Foo"));
var o2 = DynamicNewAnonymous(new NameValuePair("SQ", 2), new NameValuePair("Birth", 
DateTime.Now));
Run Code Online (Sandbox Code Playgroud)

因为我需要这样做:

dynamic o1 = new ExpandObject(); 
o1."ID" = 1;    <--"ID" is dynamic name
o1."Name" = "Foo";  <--"Name" is dynamic name
Run Code Online (Sandbox Code Playgroud)

和Scene1:

void …
Run Code Online (Sandbox Code Playgroud)

c# anonymous-types c#-3.0

91
推荐指数
2
解决办法
13万
查看次数

如何使用Expression构建匿名类型?

在C#3.0中,您可以使用Expression创建一个具有以下语法的类:

var exp = Expression.New(typeof(MyClass));
var lambda = LambdaExpression.Lambda(exp);
object myObj = lambda.Compile().DynamicInvoke();
Run Code Online (Sandbox Code Playgroud)

但是如何使用Expression创建Anonymous类?

//anonymousType = typeof(new{ Name="abc", Num=123});
Type anonymousType = Expression.NewAnonymousType???  <--How to do ?
var exp = Expression.New(anonymousType);
var lambda = LambdaExpression.Lambda(exp);
object myObj = lambda.Compile().DynamicInvoke();
Run Code Online (Sandbox Code Playgroud)

c# linq anonymous-types expression-trees

24
推荐指数
3
解决办法
2万
查看次数

如何将lua函数块转储到字符串?

如何将lua函数块转储到字符串?

function test(a, b)
  local c = a + b
  return c
end

print( type(test) )  --> function
print( test )         --> function: 0053B108
print( dumpToString(test) )
Run Code Online (Sandbox Code Playgroud)

我希望dumpToString结果如下:

function test(a, b)
  local c = a + b
  return c
end
Run Code Online (Sandbox Code Playgroud)

这该怎么做 ?

=== update1 ===
我想自动记录并注入代码.

lua lua-5.2

8
推荐指数
3
解决办法
1万
查看次数

如何从基类构造函数调用派生类虚方法?

class MyClass1
{
public:
  MyClass1()
  {
    init();
  }
  virtual void init()
  {
    printf("MyClass1 init");
  }
}

class MyClass2 : public MyClass1
{
public:
  virtual void init()
  {
    printf("MyClass2 init");
  }
}

int main()
{
  MyClass2 *obj = new MyClass2();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望得到这样的结果

"MyClass2 init"
Run Code Online (Sandbox Code Playgroud)

但它实际上显示了消息

"MyClass1 init"
Run Code Online (Sandbox Code Playgroud)

如何从基类构造函数调用派生类虚方法?

===更新1 ===

class MyClass1
{
public:
  MyClass1()
  {
    init();
  }
  virtual void init()
  {
    printf("MyClass1 init");
  }
}

class MyClass2 : public MyClass1
{
public:
  MyClass2()
    : MyClass1()
  {
  }

  virtual …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

3
推荐指数
1
解决办法
7560
查看次数

标签 统计

anonymous-types ×2

c# ×2

c#-3.0 ×1

c++ ×1

c++11 ×1

expression-trees ×1

linq ×1

lua ×1

lua-5.2 ×1