C# 在可移植库中使用CallerMemberName属性

C# 在可移植库中使用CallerMemberName属性,c#,windows-runtime,windows-phone,C#,Windows Runtime,Windows Phone,我有一个针对WindowsPhone7.1+和WindowsStore应用程序(用于WinRT)的便携库,它使用.NET4.5框架 我想在其中使用新的[CallerMemberName]属性。然而,VS2012告诉我,这个属性在我的可移植库中不可用(这似乎很正常,因为它在WP7.1项目中不可用) 然而,我发现我可以创建自己的属性,编译器会像理解真实属性一样理解它,通过使用以下代码段: namespace System.Runtime.CompilerServices { [Attribute

我有一个针对WindowsPhone7.1+和WindowsStore应用程序(用于WinRT)的便携库,它使用.NET4.5框架

我想在其中使用新的
[CallerMemberName]
属性。然而,VS2012告诉我,这个属性在我的可移植库中不可用(这似乎很正常,因为它在WP7.1项目中不可用)

然而,我发现我可以创建自己的属性,编译器会像理解真实属性一样理解它,通过使用以下代码段:

namespace System.Runtime.CompilerServices
{
  [AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
  public sealed class CallerMemberNameAttribute : Attribute { }
}
但是,一旦尝试编译它,我就会得到错误
类型“System.Runtime.CompilerServices.CallerMemberNameAttribute”在“Portable.dll”和“mscorlib.dll”中都存在

我理解这条消息,但我想知道是否有办法在我的便携库中使用
[CallerMemberName]
?我可能遗漏了一些内容。

使用为旧版本提供这些属性的

此软件包使针对.NET Framework 4、Silverlight 4和5以及Windows Phone 7.5(包括任何便携库组合)的项目能够使用.NET更高版本的新类型,包括:

  • CallerMemberNameAttribute

  • CallerLineNumber属性

  • CallerFilePathAttribute


我宁愿不使用外部库(尤其是为此)。如果他们能做到,我想我也能做到。我找不到源代码,所以我想这不是一个开源项目…:/无论如何,谢谢。AsHe:你可以自己声明属性,但是你需要考虑所有类型重定向的方面。微软专门为解决这类问题提供了这个软件包。对我来说,这是一种相当合理的依赖……事实上。它还添加了任务,这很好:)