你会如何编写一个方法来获取像[ModelBinder(typeof(GeoPointModelBinder))] GeoPoint位置这样的参数

时间:2014-08-12 14:11:12

标签: c#

我正在阅读有关ASP.NET Web API框架的示例,以及如何创建模型绑定器以在请求期间绑定参数。

我的问题是,你如何编写一个c#class /方法来接受一个看起来像这样的参数:

public HttpResponseMessage Get([ModelBinder(typeof(GeoPointModelBinder))] GeoPoint location)

如果您可以简要解释一下这种语法及其背后的一般概念,那就太棒了。

参考:http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

1 个答案:

答案 0 :(得分:1)

using System;
using System.Reflection;

namespace Test081204
{
    [AttributeUsage(AttributeTargets.Parameter)]
    public class SomeCoolAttribute : System.Attribute
    {
        public readonly int Val;

        public SomeCoolAttribute(int val)
        {
            Val = val;
        }
    }

    class Test
    {
        public void Run([SomeCool(123)] string value)
        {
            // Prints "In Run: test123"
            Console.WriteLine("In Run: " + value);
        }
    }

    class Program
    {
        public static void Main()
        {
            var parameters = typeof(Test).GetMethod("Run").GetParameters();
            var attr = parameters[0].GetCustomAttribute(typeof(SomeCoolAttribute)) as SomeCoolAttribute;

            // Prints "123"
            Console.WriteLine("In Main: " + attr.Val);

            new Test().Run("test" + attr.Val.ToString());
        }
    }
}