Get value from anonymous type

后端 未结 4 1391
醉酒成梦
醉酒成梦 2021-02-12 15:08

I have a method as following:

public void MyMethod(object obj){

  // implement

}

And I call it like this:

MyMethod(new { mypa         


        
4条回答
  •  离开以前
    2021-02-12 16:01

    First off, as others have said: don't do this in the first place. That's not how anonymous types were intended to be used.

    Second, if you are bent upon doing it, there are a number of ways to do so. The slow and dangerous way is to use dynamic, as others have said.

    The fast and dangerous way is to use "cast by example:

    static T CastByExample(object obj, T example)
    { 
        return (T)obj; 
    }
    static void M(object obj)
    {
        var anon = CastByExample(obj, new { X = 0 });
        Console.WriteLine(anon.X);  // 123
    }
    static void N()
    {
        M(new { X = 123 });
    }
    

    is there any way to check dynamic type to if contain any property?

    Use Reflection. Of course, if you are going to use Reflection then there is no need to use dynamic in the first place. You use dynamic to avoid using Reflection, so if you are going to be using Reflection anyways, you might as well just keep on using it.

    It sounds like you are trying to do something that is hard to do in C#. I would reevaluate whether you want to be doing that, and if you do, whether C# is the language for you. A dynamic language like IronPython might be a better fit for your task.

提交回复
热议问题