मुझे नहीं लगता कि यह संभव है लेकिन यहां जाता है ...सी # जेनेरिक - एन सामान्य प्रकार के साथ एक विधि बनाने के लिए संभव ..?
मैं जेनरिक्स के एन संख्या को संभाल सकता हूं जो विधि जोड़ना चाहता हूं। उदाहरण के लिए:
bool<T> MyMethod() where T: Isomething
{
}
एक प्रकार के लिए काम करेंगे
bool<T,K> MyMethod() where T: Isomething
{
}
दो प्रकार
के लिए काम करेंगे वहाँ n प्रकार के साथ काम करने के लिए एक रास्ता है - जैसे अभी यह एक विधानसभा के लिए महान काम करता है -
bool<T[]> MyMethod() where T: Isomething
{
}
कारण मैं ऐसा करना चाहते हैं एक स्थिर nhibernate सहायक विधि है जो कई विधानसभाओं से लोड कर सकते हैं लागू करने के लिए है। मेरे वर्तमान पद्धति के रूप में नीचे दिखाया गया है:
public static ISessionFactory GetMySqlSessionFactory<T>(string connectionString, bool BuildSchema)
{
//configuring is meant to be costly so just do it once for each db and store statically
if (!AllFactories.ContainsKey(connectionString))
{
var configuration =
Fluently.Configure()
.Database(MySQLConfiguration.Standard
.ConnectionString(connectionString)
.ShowSql() //for development/debug only..
.UseOuterJoin()
.QuerySubstitutions("true 1, false 0, yes 'Y', no 'N'"))
.Mappings(m =>
{
m.FluentMappings.AddFromAssemblyOf<T>();
m.AutoMappings.Add(AutoMap.AssemblyOf<T>().Conventions.Add<CascadeAll>);
})
.ExposeConfiguration(cfg =>
{
new SchemaExport(cfg)
.Create(BuildSchema, BuildSchema);
});
AllFactories[connectionString] = configuration.BuildSessionFactory();
}
return AllFactories[connectionString];
}
कहाँ पंक्ति: m.FluentMappings.AddFromAssemblyOf(), मैं कई प्रकार के उदाहरण के लिए जोड़ना चाहते हैं
foreach(T in T[]){
m.FluentMappings.AddFromAssemblyOf<T>()
}
जाहिर है यह काम नहीं कर सकता है मैं पूरी तरह से बेवकूफ नहीं हूँ, लेकिन मैं जेनरिक पर इतना गर्म नहीं कर रहा हूँ - किसी की पुष्टि कर सकते कि यह संभव नहीं है :-) ..? आपकी राय में इस प्रभाव को प्राप्त करने का सबसे शानदार तरीका क्या होगा ..?
जैसा कि जॉन नोट करता है, यह सी # या सीएलआर प्रकार प्रणाली की सुविधा नहीं है। यदि इस प्रकार की प्रणाली आपको रूचि देती है, तो हास्केल में उच्च-रैंक प्रकारों को पढ़ने पर विचार करें। –
@Eric - धन्यवाद - मैंने अभी हास्केल को देखना शुरू कर दिया और एक बहुत ही रोचक भाषा की तरह दिखता है। –