2012-06-12 21 views
4

我有两个包含扩展方法的项目。一个项目使用C#实现,另一个使用VB.NET实现,因为在VB.NET中我可以做一些事情,我不能在C#中,我想在我的扩展方法中利用这些功能。如何在具有相同目的的相同解决方案中为C#和VB.NET项目提供有意义的名称?

我如何命名项目来表达它们的意思,同时区分它们是用不同的语言实现的?

对于C#精英:

之一在于VB.NET支持C#不特点:

Doesn't C# Extension Methods allow passing parameters by reference?

供参考:这并不适用于引用类型的工作,这是我感兴趣的是什么。

public static void LoadFromXml<T>(this T targetObject, string xml) 
{ 

    targetObject = _Serializer.DeserializeFromXML<T>(xml); 

} 
+5

只是好奇......您在VB.NET中使用了哪些功能,您认为您不能在C#中使用?即使这是真的,你可以用VB.NET建立一个DLL,并在你的C#项目中利用它。 – Brad

+0

的确如此,VB.NET支持ByRef参数是它的扩展方法。 http://stackoverflow.com/questions/1259103/doesnt-c-sharp-extension-methods-allow-passing-parameters-by-reference – Achilles

+0

它都编译为相同的东西(MSIL),所以不会有任何区别用户。通常组件是根据它们执行的功能命名的。我不认为会有一个干净的解决方案,并且对于用户来说(他必须记得那个特定函数在哪个任意程序集中)是非常令人沮丧的。哪些功能非常重要,以至于它们会促使您拆分组件? – JDB

回答

2

啊......刚才看到你的评论。我建议在C#中实现大多数扩展方法并将其称为“Core”,然后在VB.NET中实现额外功能并将其称为“扩展”。

然后,让VB.NET显式引用Core并继承它。然后,用户可以使用Core组件来完成大部分任务,或者使用Extended组件来实现附加功能。

编辑:我仍然认为你的用户会更好,如果你想出了一种不分割组件的方式,但显然我不知道你的所有需求/实现细节。

4

如何命名项目来表达它们的意思,同时区分它们是用不同的语言实现的?

我实际上是想不是转达这个。提供两个项目名称,这些名称本身是有意义的。每个项目都应该可以使用两种语言,因此无论用于创建项目的语言如何,名称都应该是有意义的。

+1

+1 - 良好的命名约定对程序员来说至关重要。它在发现上有所不同,这可能是我们所做的一半。 – JDB

相关问题