none
帮忙把以下代码改成泛型的 RRS feed

  • 问题

  • // 扩展实例集合
            private List <IUserExtension> extensionInstances = new List <IUserExtension>();

            /// <summary>
            /// 获取指定类型的扩展实例集合
            /// </summary>
            public IList <IUserExtension> ExtensionInstances
            {
                get
                {
                    foreach (string assemblyName in this.AssemblyNames)
                    {
                        string className = assemblyName + ".UserExtension";
                        IUserExtension extensionInstance = (IUserExtension)Activator.CreateInstance(assemblyName, className);
                        this.extensionInstances.Add(extensionInstance);
                    }
                    return this.extensionInstances;
                }

    我想把上面的代码用泛型来写在一个基类里,这样子类直接继承时添个类型参数即可使用。但是遇到了问题;
    1.在第二个方法里的className名称的创建出问题“.UserExtension”的由来是类型参数去掉第一个字符“I”,
    比如,类型参数为IUserExtension,那么className=assemblyName+".UserExtension",这个不知道怎么动态创建?
    2.就是下一行,在创建类型实例时类型转换不允许。
    请大家帮我看看,该怎么做?

    做最好的自己
    2009年4月11日 4:43

答案

  • 1

    typeof(T)

    因该可以得到类型  然后就是对.FullName进行字符串操作了   应该很简单吧


    下一个问题应该也不难解决阿
    try这个:   (T)(object)Activator.CreateInstance(assemblyName, className);


    工作突然有点忙 嘿嘿
    2009年4月12日 14:48
    版主

全部回复

  • 请多多关照。
    做最好的自己
    2009年4月12日 1:42
  • 1

    typeof(T)

    因该可以得到类型  然后就是对.FullName进行字符串操作了   应该很简单吧


    下一个问题应该也不难解决阿
    try这个:   (T)(object)Activator.CreateInstance(assemblyName, className);


    工作突然有点忙 嘿嘿
    2009年4月12日 14:48
    版主