在单个对象上实现linq的Cast <t>()</t>

时间:2010-09-09 09:19:34

标签: c# linq

如何在单个对象上实现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 = "";

1 个答案:

答案 0 :(得分:6)

为什么呢?为什么不使用这个星球上每个C#程序员都熟悉的转换语法?除非你能想到在方法中执行演员表的非常明确的好处,否则坚持使用内置机制。

如果真的想要,你可以写:

public static T Cast<T>(this object o) {
    return (T) o;
}

...但我强烈建议你不要这样做。