是否可以将委托作为参数的参数?是否有可能拥有一个委托作为属性参数?
像这样:
public delegate IPropertySet ConnectionPropertiesDelegate();
public static class TestDelegate
{
public static IPropertySet GetConnection()
{
return new PropertySetClass();
}
}
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface,AllowMultiple=false,Inherited=true)]
public class WorkspaceAttribute : Attribute
{
public ConnectionPropertiesDelegate ConnectionDelegate { get; set; }
public WorkspaceAttribute(ConnectionPropertiesDelegate connectionDelegate)
{
ConnectionDelegate = connectionDelegate;
}
}
[Workspace(TestDelegate.GetConnection)]
public class Test
{
}
如果它不是可能的,什么是明智的选择吗?
其实这是一个很好的解决方法。我为此构建了一个speficic接口,但代理非常简单。谢谢! –
这是一个解决方法,但不是一个好的方法。正如@nemesv所说的 - hacky和容易出错的方式,因为如果使用重构菜单将方法GetConnection的名称更改为其他名称,字符串“GetConnection”将不会自动更改。 – prostynick
那么是否有可能在C#手动限制参数类型的构造函数?我没有听到有关它的信息,但正如我们在'Attribute'中看到的那样,它是可能的。怎么样? – monstr