Bir özniteliğin parametresi olarak temsilci kullanmak mümkün mü? Bunun gibiÖznitelik parametresi olarak bir temsilci olması mümkün mü?
:
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
{
}
Ve onun değil mümkünse
, mantıklı alternatifler nelerdir?
Aslında bu iyi bir çözümdür. Bunu yapmak için speficic bir arayüz oluşturdum, ancak delege çok daha kolay. Teşekkürler! –
Bu bir geçici çözüm, ancak iyi değil. Tam olarak @nemesv'in söylediği gibi - hacky ve error prone, çünkü eğer GetConnection yönteminin ismini refactor menüsünü kullanarak değiştirirseniz, "GetConnection" dizesi otomatik olarak değiştirilmeyecektir. – prostynick
Yani C# kurucu argüman türünü manuel olarak kısıtlamak bir olasılık var mı? Bu konuda bir şey duymadım, ama 'Attribute' türünde gördüğümüz gibi bu mümkün. Nasıl? – monstr