如何在单个对象上实现linq的Cast<T>()
方法?
以下是该方案:
public interface IFoo
{
String Message { get; set; }
}
public class Foo : IFoo
{
IFoo.Message { get; set; }
internal SecretMessage { get; set; } // secrets are internal to the assembly
}
internal class Fubar
{
public IFoo Foo { get; set; }
}
我希望能够......
fubarInstance.Foo.Cast<Foo>.SecretMessage = "";
而不是......
((Foo)fubarInstance.Foo).SecretMessage = "";
答案 0 :(得分:6)
为什么呢?为什么不使用这个星球上每个C#程序员都熟悉的转换语法?除非你能想到在方法中执行演员表的非常明确的好处,否则坚持使用内置机制。
如果真的想要,你可以写:
public static T Cast<T>(this object o) {
return (T) o;
}
...但我强烈建议你不要这样做。