0
   Using<GetFillupById>().Execute(id);

从未见过这样的语法。使用的定义是:

protected T Using<T>() where T : class
    {
        var handler = serviceLocator.GetInstance<T>();
        if (handler == null)
        {
            throw new NullReferenceException("Unable to resolve type with service locator; type " + typeof(T).Name);
        }
        return handler;
    }

如果有人能告诉我这东西到底是什么——功能,属性?或向我展示一些我可以阅读的链接 - 我将不胜感激

4

5 回答 5

2

此方法/函数使用服务定位器提供类型的实例T,返回该实例以便可以调用它。这与此类似:

new GetFillupById().Execute(id);

但是这个辅助方法不是默认的构造函数调用,而是包装对象初始化并将其委托给服务定位器对象。泛型的使用允许将其用作服务定位器识别的任何类型的单个方法调用。

类型约束where T : class意味着可以为T类而不是结构的任何类型有效调用此方法,即引用而不是值类型。反之亦然where T : struct。您还可以包含约束来表示T必须实现特定接口、扩展特定类或公开默认构造函数 ( where T : new())。

要查找的相关概念:泛型、控制反转。

于 2012-07-12T08:56:20.510 回答
1

它是某个类的通用方法。

你可以在这里找到更多信息

于 2012-07-12T08:56:49.330 回答
1

它的通用方法...

MSDN: http: //msdn.microsoft.com/en-us/library/twcad0zb (v=vs.80).aspx

于 2012-07-12T08:57:30.290 回答
0

this( Using<T>) 是一个通用方法。有关泛型方法的介绍,请查看此MSDN 文章

于 2012-07-12T08:55:45.740 回答
0

我假设 SO html 解析器已经吃掉了你<T>的方法,并且该方法如下所示:

protected T Using<T>() 
    where T: class 
{ 
    var handler = serviceLocator.GetInstance(); 

    if (handler == null) 
    { 
        throw new NullReferenceException("Unable to resolve type with service locator; type " + typeof (T).Name); 
    } 

    return handler; 
}

该方法或该方法位于泛型类中(否则没有为 T 指定类型)

C#中有很多泛型类型

查看System.Collections.Generic

你可能见过的一种类型是List<T>它允许你创建一个强类型的类型列表T

例如

var myList = new List<int>(); // This is a strongly typed list of int - if you call myList.Add() the Add will expect an int as the first parameter - at design time an error will be raised if the a non compatible type is used

在他的回答中查看 Prateeks 链接中的信息

于 2012-07-12T09:01:35.013 回答