Có thể có đại biểu làm tham số của thuộc tính không?Có thể có đại biểu làm tham số thuộc tính không?
Như thế này:
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
{
}
Và nếu nó không thể, lựa chọn thay thế hợp lý là gì?
Thực ra đây là giải pháp tốt. Tôi đã xây dựng một giao diện speficic để làm điều này, nhưng các đại biểu là sooo dễ dàng hơn nhiều. Cảm ơn! –
Đó là một giải pháp thay thế, nhưng không phải là giải pháp tốt. Nó chính xác như @nemesv nói - hacky và error dễ bị, bởi vì nếu bạn thay đổi tên của phương thức GetConnection thành cái gì đó khác bằng cách sử dụng trình đơn cấu trúc lại, chuỗi "GetConnection" sẽ không bị thay đổi tự động. – prostynick
Vì vậy, có một khả năng trong C# thủ công hạn chế loại đối số của nhà xây dựng? Tôi không nghe thấy gì về nó, nhưng như chúng ta thấy trong kiểu 'thuộc tính', điều đó là có thể. Làm sao? – monstr