布吉岛类型,就用object,简单粗暴
object怎么设置属性赋值?现在我要new一个类,但是直接new一个object没有意义
@爱吃鲸的虾: 奥,你这个问题应该是不确定参数个数导致不能使用匿名类的问题
@猝不及防: 对啊,感觉我走偏了,应该有其他办法,只是我没想到,我需要一个动态的对象,键值都是可以动态定义的,就非常类似于字典,但是又不是字典
匿名类是不行的,匿名类必须key和value都确认了。
你可以试试dynamic或者JSON对象,但是不推荐这么干。
dynamic试过,但是它的属性也是要手动去定义的,在不确定属性的情况下也没法用,我现在在试json,我想应该换个思路了
@爱吃鲸的虾: 抱歉抱歉,我理解错你的问题了。
按照你说的,就算生成那样的类,你也没办法通过类.属性这样点出来,因为你也不知道属性名。
所以还是只能当成一个类似字典的东西去读,所以这个需求实际是没意义的。
如果你 想要的是这样格式的一个字符串,那就好办了。我记得牛顿json对字典序列化就是那样的结果。
这里有一个需求,我需要new一个匿名类。
通常这99.99%是伪需求。
大佬好,我现在项目里用到了Dapper,一个Orm框架,我想封装一下自己用,现在我写了一条sql语句,类似这样
然后它要传参数@name,@pwd,dapper里给出了这样一个方案
但是我想写成公共的方法,但是userinfo这个类(表名)这个位置定义成泛型类(TEntity)没法实现,lambda没法给他指定字段名。
后面我看了dapper的参数可以直接传一个对象,类似问题里那种,但是现在发现那种匿名对象没法动态生成,所以大佬有什么好的办法吗
@爱吃鲸的虾: 传个泛型T,他不香吗?
@爱吃鲸的虾: 我也建议你可以看一下泛型相关的资料。
@爱吃鲸的虾: 我和你 一样的问题。。。你解决了吗。。。。
可以试试 dynamic
dynamic 不就是干这个事情的么。
dynamic d= new ExpandoObject();
d.anything="aa";
d.any=()=>{};
var kv = (ICollection<KeyValuePair<string, object>>)d;
kv.add("name","cnblogs");
看了你的文字描述还是搞不太懂,你能把你想写的公共方法定义出来发上来吗,形如这样:
returnType Function(Input)
可以试试 expandoObject,不知道是否符合你的需求
var dic = new Dictionary<string, object>
{
{ "Foo", "bar" },
{ "Some", new { Key = "key", Value = "value" } }
};
dynamic obj = dic.Aggregate(
new ExpandoObject(),
(agg, prop) =>
{
var (key, value) = prop;
agg.TryAdd(key, value);
return agg;
});
Console.WriteLine(obj.Foo);
Console.WriteLine(obj.Some);
打印出来的结果是:
bar
{ Key = key, Value = value }