我有一个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("");
方法。
我希望它清楚。