小编Fre*_*els的帖子

C#前缀参数名称@

可能重复:
变量名前的@符号在C#中是什么意思?

重复:

变量名前面的@符号在C#中是什么意思?

有时我会看到一些C#代码,其中一个方法参数以@为前缀,如下所示:

public static void SomeStaticMethod( SomeType @parameterName ) { }
Run Code Online (Sandbox Code Playgroud)

这是什么意思 ?它有一些重要的特殊含义吗?

我在NHibernate中创建一个EventListener,当我让VS.NET生成接口方法时,它生成如下的OnPostLoad方法:

public class PostLoadEventListener : IPostLoadEventListener
{
    public void OnPostLoad( PostLoadEvent @event )
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

为什么是这样 ?

c#

72
推荐指数
3
解决办法
3万
查看次数

生成自定义编译时警告C#

我正在使用VS2008,并希望根据属性上的自定义属性创建编译时警告/错误(如果可能).

目前有两个案例让我感兴趣:

  [MyAttribute (typeof(MyClass)]
Run Code Online (Sandbox Code Playgroud)

MyClass必须实现一个接口.目前我在属性的构造函数中声明了这一点,但由于堆栈跟踪的性质,这不容易跟踪:

 public MyAttribute (Type MyClassType)
    {
         System.Diagnostics.Debug.Assert(typeof(MyInterface).IsAssignableFrom(MyClassType),
                                         "Editor must implement interface: " + typeof(MyInterface).Name);

    }
Run Code Online (Sandbox Code Playgroud)

我感兴趣的第二种情况是我在属性中定义了一个类型,如果该类型实现了一个接口,那么如果另一个属性不存在则应该显示警告.

IE if(MyClass.Implements(SomeInterface)&&!Exists(SomeAttibute)){Generate Warning}

[MyAttribute(typeof(MyClass)] 
// Comment next line to generate warning
[Foo ("Bar")]
Run Code Online (Sandbox Code Playgroud)

谢谢!

c# compiler-construction postsharp custom-attributes

19
推荐指数
1
解决办法
4385
查看次数

NHibernate:独家锁定

在NHibernate中,我想检索一个实例,并在表示数据库中检索到的实体的记录上放置一个独占锁.

现在,我有这个代码:

With.Transaction (session, IsolationLevel.Serializable, delegate
{
    ICriteria crit = session.CreateCriteria (typeof (TarificationProfile));

    crit.SetLockMode (LockMode.Upgrade);

    crit.Add (Expression.Eq ("Id", tarificationProfileId));

    TarificationProfile profile = crit.UniqueResult<TarificationProfile> ();

    nextNumber = profile.AttestCounter;

    profile.AttestCounter++;

    session.SaveOrUpdate (profile);
});
Run Code Online (Sandbox Code Playgroud)

如您所见,我将此Criteria的LockMode设置为"Upgrade".这会为SQL Server发出一个SQL语句,它使用updlockrowlock锁定提示:

SELECT ... FROM MyTable with (updlock, rowlock)
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够使用真正的独占锁.也就是说,防止其他人可以读取这个相同的记录,直到我释放锁定.换句话说,我希望能够使用xlock锁定提示,而不是updlock.

我不知道(甚至是否)我能做到这一点......也许有人可以给我一些关于这个的提示:)

如果确实有必要,我可以使用NHibernate的SQLQuery功能,并编写自己的SQL查询,但是,我想尽可能避免这种情况.

nhibernate locking

14
推荐指数
1
解决办法
1万
查看次数

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

Visual Studio.NET 2008没有给我英文异常消息

在以前版本的VS.NET或.NET框架中,默认情况下您会收到英语异常消息.如果您安装了"语言包",则会收到该语言包语言的异常消息.

现在,我正在使用荷兰语Windows Vista上的英语VS.NET 2008(没有安装语言包).

当我正在开发,并且我编写了一些触发异常的代码时,我收到的异常消息是荷兰语(我的操作系统的语言).我不希望它在荷兰; 我希望它是英文的.(原因很明显:谷歌更容易,而那些翻译过的错误信息都是废话).

在VS.NET中,我的国际设置设置为"英语",在Windows Vista中,我的区域设置设置为"荷兰语/比利时".如何在不更改Windows中的区域设置的情况下获取英语异常消息?

exception visual-studio-2008

10
推荐指数
1
解决办法
1469
查看次数

私人收藏映射流畅的nhibernate

我该如何映射:

public class Customer
{
   private IList<Order> _orders;
   public IEnumerable<Order> 
   GetAllOrders()
   {
      return _orders;     
   }
}
Run Code Online (Sandbox Code Playgroud)

在项目页面上有一些样本,但没有关于这种情况.有这个样本:

// model   
public class Account   
{   
  private IList<Customer> customers = new List<Customer>();   

  public IList<Customer> Customers   
  {   
    get { return customers; }   
  }   
}

// mapping   
HasMany(x => x.Customers)   
  .Access.AsCamelCaseField();  
Run Code Online (Sandbox Code Playgroud)

但它假设Account有公共领域的客户,那个场景与我的不同.我尝试了一些可能的选项但没有效果:

HasMany(x => Reveal.Propertie("_orders"))
Run Code Online (Sandbox Code Playgroud)

私有字段在简单属性映射中工作正常但集合映射完全不同.任何的想法?谢谢

fluent-nhibernate

7
推荐指数
1
解决办法
4296
查看次数

如何在某些条件下序列化某些属性

使用XML序列化序列化类时,如何有条件地输出某些属性.即在某些情况下,它输出此属性,在其他情况下,它不输出.

.net c# xml-serialization

7
推荐指数
1
解决办法
3622
查看次数

找不到程序集System.ServiceModel

我正在sharepoint上部署一个webpart并遇到一些错误.webpart使用来自Web服务的数据并使用Microsoft Chart(Framework 3.5)显示图表.当我尝试访问它时,我得到以下错误:

无法加载文件或程序集'System.ServiceModel,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'或其依赖项之一.该系统找不到指定的文件.

StackTrace:在System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage消息,WebResponse响应,Stream responseStream,Boolean asyncCall)
处于System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName,Object []参数)

我尝试将System.Servicemodel.dll复制到bin文件夹并在GAC上注册,但错误不会更改.任何的想法?

谢谢

sharepoint .net-3.5

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

将.NET类(具有事件)暴露给COM

我想向COM公开.NET类.这很容易:

  • 我创建了一个接口,我在其中定义了应该是ComVisible的类的成员
  • 我自己定义了这些成员的DispId
  • 我定义接口应该是 ComVisible
  • 我为该Guid接口分配了一个
  • 我创建了一个实现该接口的类

没什么大不了.这一切都有效.但是,现在我的问题是:我在该类中有一些事件,我也希望向COM公开.
这应该没什么大不了的,但是,当我看一些例子(由MS'ComInterop工具生成的fi代码)时,我看到事件是在一个单独的接口中声明的.那就是:应该是的类ComVisible,实现2个接口:

  • 一个接口,它定义了应该使用的常规方法和属性 ComVisible
  • 另一个定义应该是的事件的接口ComVisible.

现在,我的问题是:为什么?这是什么原因?

为什么ComVisible在另一个接口中定义了事件,为什么它们只是在包含应该是的方法和属性的接口中没有定义ComVisible

这背后的原因是什么?

.net c# com comvisible

4
推荐指数
1
解决办法
2459
查看次数

在C#中,在类中引用成员属性的普遍接受的方法是什么?

已经阅读了MSDN命名指南并且找不到明确的答案,除此之外,您应该尽量避免使用下划线.假设我有以下内容:

public class Employee
{
    private string m_name;  //to store property value called Name

    public string Name
    {
        get { return m_name; }
        set { m_name = value; }
    }

    public void ConvertNameToUpper()
    {
        //by convention should you use this
        return m_name.ToUpper();

        //or this
        return Name.ToUpper(); 
    }
}
Run Code Online (Sandbox Code Playgroud)

上面m_name的正确命名约定是什么?例如,在代码我继承我常见:

  • m_name
  • _名称
  • 名称
  • myName或其他一些随机标识符

哪一个(或另一个)最常被接受?

作为后续,在类的方法中,您是指内部(私有)标识符还是公共属性访问器?

c# class-design naming-conventions

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