小编Luc*_*cas的帖子

虚拟扩展方法?

我有一个在客户端应用程序和服务器应用程序中使用的类.在服务器应用程序中,我通过扩展方法向类添加了一些功能.效果很好.现在我想要更多:

我的班级(B)继承自另一个班级(A).

我想将一个虚函数附加到A(比如说Execute()),然后在B中实现该函数.但只在服务器中实现.Execute()方法需要使用只有服务器知道的类型才能完成只能在服务器上执行的操作.

有很多类型的继承自A,就像B一样,我想为它们中的每一个实现Execute().

我希望我可以为A添加一个虚拟扩展方法,但这个想法似乎没有飞过.无论有没有扩展方法,我都在寻找解决这个问题的最优雅的方法.

c# virtual extension-methods

12
推荐指数
1
解决办法
5552
查看次数

我知道typeof(T),但编译器没有.怎么修?

我正在尝试编写一个这样的方法:

public static T Test<T>()
{
  if (typeof(T)==typeof(string))
     return "1241";

  // do something else
}
Run Code Online (Sandbox Code Playgroud)

但我似乎无法弄清楚如何把它拉下来.我想根据调用方法的T类型返回值.我需要返回字符串,int,自定义类,List等.

实际的用例是一些自定义序列化代码,其中反序列化代码必须知道它应该生成的对象的类型.

澄清:上面的示例给出以下错误:无法将字符串转换为类型T.

理想的解决方案适用于值类型和引用类型,并且不包含用于重载解析的虚拟参数.

我开始怀疑是否存在理想的解决方案.

谢谢,卢卡斯

c# generics

9
推荐指数
3
解决办法
1930
查看次数

使VisualStudio C#在项目目录之外有文件/文件夹

我正在尝试提供一个设置,我可以生成一个visual studio解决方案+ projectfile,它引用存储.sln和.csproj的文件夹"外部"的文件和文件夹.

(捕获:)),我需要你创建的新文件右键单击一个文件夹并说出要在右键单击的文件夹中生成的"新代码文件",它位于.sln文件夹之外.

它真的不能完成吗?

PS旁注:想要这样做的原因是.cs文件实际上是由不同的程序和许多其他文件一起使用的,我不想要.sln,.csproj,.ReSharper,.suo等文件混乱我的目录.

visual-studio

8
推荐指数
2
解决办法
8271
查看次数

序列化事件

我有A级,它暴露了一个事件.订阅该活动的B类对象.这两个实例实际上也是对彼此的定期引用.我想序列化A,并通过线路传输两个对象,在另一端重建.这样可以正常工作,但不保留事件订阅.

我想我必须实现自己的序列化构造函数,以便在我的对象被反序列化时"收到通知",因此它可以重新订阅事件.

但是,看起来这意味着我必须通过实现ISerializable来完全实现自动化.我现在依赖于BinaryFormatter和[Serializable]属性,实际上非常喜欢它.

有没有人知道让我获得反序列化通知的方法,同时仍然可以使用内置的序列化系统为我自动序列化和反序列化我有点复杂的对象图?

谢谢,卢卡斯

c# events serialization

6
推荐指数
1
解决办法
3474
查看次数

从Animal []到Dog []的最佳方式

如果狗来自动物.

我有一个动物[],我碰巧知道只包含狗.什么是最快/最好的方式让我的手[狗]?我使用了新的ArrayList(oldarray).ToArray(typeof(Dog)); 到目前为止,但感觉有点笨拙,我想知道是否有更优雅的东西.

更新:使用.net 2.0配置文件.应该直接提到这个.我希望在这种情况下编辑原始问题符合stackoverflow网络礼节.我期待着我们可以升级和使用Linq的那一天.

再见,卢卡斯

c# arrays casting

5
推荐指数
2
解决办法
854
查看次数