Tag: 扩展方法

Linq To SQL问题 – 没有支持的SQL转换(C#属性的问题)

我正在将一些Linq扩展到SQL类。 我有两个类似的语句,第一个工作,第二个不工作 (“没有支持转换为SQL”错误)。 var reg2 = rs.ProductRegistrations().SingleOrDefault(p => p.Product.product_name == “ACE”) var reg5 = rs.ProductRegistrations().SingleOrDefault(p => p.product_name == “ACE”); 阅读此链接后LINQ:没有转换为SQL 我理解(我认为),基本上所有内容都需要“内联”,否则表达式树无法正确计算。 第一个示例直接访问LinqToSql EntitySet“Product”(保持所有内联),而第二个示例使用如下定义的属性: public partial class ProductRegistration :IProduct { public string product_name { get { return this.Product.product_name; } } } 我假设我的问题是LinqToSql无法翻译。 我如何将“财产”变成等同的陈述? 我知道我需要使用System.Linq.Expressions.Expression,但我尝试的一切都不起作用(有些甚至不编译)。 也许我应该创建一个Extension方法(使用Expression),然后从属性调用它? 属性可以调用扩展方法吗? 下面的事情不起作用: public static System.Linq.Expressions.Expression<Func> ProductName2 (string pname) { return (p […]

MVC中的@ Html.EditorFor(m => m)lambda语法

我只是在学习C#和MVC,并试图了解一些例子。 @Html.EditorFor(m => m) 最终我发现’=>’是lambda运算符,它意味着像“m这样的m”。 这对我来说没有任何意义。 为什么不直接进入? 另外,我没有看到m在我正在使用的任何视图中定义。 定义了模型,据称这就是这种方法所采用的方法。 这是如何运作的? 最后,我查看了Html.EditorFor的定义,并没有看到只传递一个参数的任何重载。 这个语法定义在哪里? http://msdn.microsoft.com/en-us/library/ee834942.aspx

C# – 使用扩展方法提供默认接口实现

我刚刚学习了C#扩展方法,并想知道我是否可以使用它来为接口提供默认实现。 说: public interface Animal { string MakeSound(); } public static string MakeSound(this Animal) { return “”; } 然后 public class Dog : Animal { string MakeSound() { return “Bark”; } } public class Porcupine : Animal { } 最后: Animal dog = new Dog(); Animal porcupine = new Porcupine(); Print(dog.MakeSound()); Print(porcupine.MakeSound()); 我希望豪猪和其他没有明确实现MakeSound动物使用返回空字符串的默认扩展方法,但是狗和任何具有显式实现的动物都会返回自己的实现,例如“Bark”。 所以我的问题:1。这可行吗? 2.如果没有,是否有其他方法可以实现接口的默认行为? […]

C#用于检查属性的扩展方法

对不起,如果这是一个愚蠢的菜鸟问题,请温柔地对待我,我正在努力学习…… 我想测试模型和控制器之类的属性方法。 主要是为了确保他们有正确的属性,即必需。 但我也将它用作扩展方法和Lambdas的实验。 我想要的是一种方法,当被称赞时看起来有点像 Controller controller = new Controller(); controller.MethodName(params).HasAttribute(); 我尝试了一些扩展方法,但没有达到这个程度。我确信这应该很简单,但似乎无法使我的generics等正确。

如何在解决方案中找到所有扩展方法?

如何在解决方案中找到所有扩展方法?

为IEnumerable 定义一个扩展方法,它返回IEnumerable ?

如何为IEnumerable定义一个返回IEnumerable的扩展方法? 目标是使扩展方法可用于所有IEnumerable和IEnumerable ,其中T可以是匿名类型。

C#扩展方法 – 到目前为止有多远?

Rails引入了Ruby的一些核心扩展,如3.days.from_now ,它返回,因为你预计将来会有三天的日期。 使用C#中的扩展方法,我们现在可以执行类似的操作: static class Extensions { public static TimeSpan Days(this int i) { return new TimeSpan(i, 0, 0, 0, 0); } public static DateTime FromNow(this TimeSpan ts) { return DateTime.Now.Add(ts); } } class Program { static void Main(string[] args) { Console.WriteLine( 3.Days().FromNow() ); } } 或者怎么样: static class Extensions { public static IEnumerable To(this […]

如何使用静态返回类型创建扩展方法?

我试图为Color静态类编写一个简单的扩展方法,它返回相当于该颜色的黑色和白色。 问题是扩展方法不能返回静态类型… 那么,我该怎么做?! 请帮我。

在类中使用扩展方法,它们扩展

考虑这个课程: public class Thing { public string Color { get; set; } public bool IsBlue() { return this.Color == “Blue”; // redundant “this” } } 我可以省略关键字this因为Color是Thing的属性,我在Thing编码。 如果我现在创建一个扩展方法: public static class ThingExtensions { public static bool TestForBlue(this Thing t) { return t.Color == “Blue”; } } 我现在可以将我的IsBlue方法更改为: public class Thing { public string Color { get; […]

我可以在现有的.NET结构中添加枚举,比如Date吗?

显然,微软的日期结构没有月份枚举。 我想知道的是,是否可以创建枚举并将其附加到DateTime结构? 扩展方法立即浮现在脑海中,但我不知道如何使用它们来解决这个问题。 Dim july As DateTime.Months = DateTime.Months.July Public Enum Months January = 1 February = 2 March = 3 April = 4 May = 5 June = 6 July = 7 August = 8 September = 9 October = 10 November = 11 December = 12 End Enum 有没有人对此有任何想法? 更新:我没有尝试获取当前月份或给定日期的月份名称。 我知道该怎么做。 我只是想创建一个具有Month属性的类,并希望使用Enum来表示月份。 由于这似乎是一个可以在其他地方使用的项目,我讨厌将Enum放入我的class级,而宁愿让它“定位”在与其直接相关的结构中,以便可以轻松找到它。 […]