使用两个不同的构造函数创建T
本文关键字:构造函数 创建 两个 | 更新日期: 2023-09-27 18:25:13
我有以下方法:
public void Add<T>() where T : ISetup, new() {
new T().Run();
} // Add
这可以如下使用:
Add<SettingsSetup>()
设置设置所在位置:
public class SettingsSetup : ISetup {
private Func<String, String> _resolver;
public SettingsSetup(Func<String, String> resolver) {
_resolver = resolver;
}
public void Run() { }
}
我希望能够使用添加如下:
Add<SettingsSetup>()
或者传递要在SettingsSetup上使用的参数:
Add<SettingsSetup>(Func<String, String>)
这可能吗?
将Resolver
属性添加到ISetup
,并从Add
:的过载中进行设置
public void Add<T>(Func<String, String> resolver) where T : ISetup, new()
{
var setup = new T();
setup.Resolver = resolver;
setup.Run();
}
simple:
public interface ISetup
{
void Run();
int SomeProp { get; set; }
}
public class Setup : ISetup
{
public void Run()
{
throw new NotImplementedException();
}
public int SomeProp
{
get
{
return 2;
}
set
{
SomeProp = value;
}
}
}
public bool MyMethod<T>(T t) where T : ISetup
{
return t.SomeProp != 2;
}
和用途:
var setup = new Setup();
bool response = MyMethod<Setup>(setup); // false
编辑:以下是好消息来源:http://msdn.microsoft.com/en-us/library/bb384067.aspx