如何从c#中的对象赋予泛型类

时间:2017-08-02 14:28:38

标签: c# generics

我有一个XML序列化器加载方法,它需要一个泛型类。但是泛型类是从另一个接口派生的。我一直在开发一个插件,它使用一个通用的模型。

jQuery.get('/a.txt', function(data) {
  /* use data here, may need to be parsed as in other answer */             
});

我有一个方法:

//these are common for all
 public interface ICommonBaseSettings { }
 public interface IProductSpecific : ICommonBaseSettings { }

//this is for plugin specific
 public class GeneratorSettings : IProductSpecific { }

如您所见,GetSettings方法返回GeneratorSettings。 这是我的通用类

public sealed partial class GeneratorPluginForm : PluginForm
{
     public override ICommonBaseSettings GetSettings(bool isGui)
     {
        return new GeneratorSettings();
     }
}

如果我这样称呼它,那就可以了。

public static class Serializer<T> where T : class 
{
    public static T Load(string path)
    {
        T serializableObject = LoadFromDocumentFormat(null, path, null);
        return serializableObject;
    }
}

但我有这段代码:

var obj =  Serializer<GeneratorSettings>.Load("...");

GetSettings方法返回ICommonBaseSettings,但实际上它是GeneratorSettings类。

例如,此代码不起作用

   PluginLoader loader = new PluginLoader();
   var pluginForm = loader.GetPluginForm("plugin dll path");
   var tmpSettings = pluginForm.GetSettings(false);

我想给一个对象而不是&#34; T&#34;进入Serializer

我的问题是如何使用tmpSettings对象调用 Serializer<Activator.CreateInstance(tmpSettings.GetType()>.Load(""); 方法。

我希望它清楚。

0 个答案:

没有答案