在函数调用时执行代码的C#属性

在函数调用时执行代码的C#属性,c#,attributes,custom-attributes,C#,Attributes,Custom Attributes,我正在编写一个联网的客户机-服务器应用程序,由于使用了框架(Unity3d),它将客户机和服务器代码混合在一个文件中,当在应用程序的错误端调用函数时,会导致混淆错误。我想出了一个想法,编写定制的attibutes(让我们称它们为[Client]和[Server])来修饰这些函数,这样,如果函数调用错误,它们就会记录警告。这样的属性还可以提高代码的可读性 public class ClientAttribute : System.Attribute{ public ClientAttrib

我正在编写一个联网的客户机-服务器应用程序,由于使用了框架(Unity3d),它将客户机和服务器代码混合在一个文件中,当在应用程序的错误端调用函数时,会导致混淆错误。我想出了一个想法,编写定制的attibutes(让我们称它们为[Client]和[Server])来修饰这些函数,这样,如果函数调用错误,它们就会记录警告。这样的属性还可以提高代码的可读性

public class ClientAttribute : System.Attribute{
    public ClientAttribute(){
        if(Network.isServer) Debug.LogWarning("Function called on a wrong side!");
    }       
}

public class SomeClass{

    //this function will log warning if called on Server side
    [Client]
    SomeClientSideFunction(){}

}
遗憾的是,MSDN说只有在调用GetCustomAttributes()之后才调用属性构造函数。是否有任何方法可以使用属性或任何其他方法来解决此问题?除了手工书写之外

if(Network.isServer) Debug.LogWarning("Function called on a wrong side!");

在每一个客户端函数的开头-因为这会起作用,但不会提高可读性。

看看,在.NET中没有内置任何东西。我想有一种方法,看看“代码访问安全性”,在执行方法之前会调用一些属性。但如果你把它用于安全以外的任何目的,你就是在滥用它。看看这个:@Lasse是的,看起来不错,但它是商业用途,所以免费版本是毫无疑问的,而功能太小了,我真的看不到产品所有者以300美元的价格购买许可证。无论如何谢谢你!