如果使用其他属性,我想强制使用属性.如果将特殊的第三方属性附加到属性,则还需要将此属性赋予属性是否有可能这样做?
例如:
[Some3rdPartyAttribute("...")]
[RequiredAttribute("...)]
public bool Example{get; set;}
Run Code Online (Sandbox Code Playgroud)
应该没有编译错误,
[Some3rdPartyAttribute("...")]
public bool Example{get; set;}
Run Code Online (Sandbox Code Playgroud)
应该带来编译错误或警告.
该属性本身的定义类似于http://msdn.microsoft.com/en-US/library/z919e8tw(v=vs.80).aspx本身的示例.但是如果使用另一个属性,如何强制使用属性?
今天我有一个关于WCF通信风格的问题.
我有时拒绝一点,所以以编程方式使用东西(想要控制自己),我不喜欢巨大的.有时需要在两个程序部件之间进行通信,有时在同一台机器上,有时在网络上.
所以我尝试以编程方式使用WCF,而不是使用配置文件,svcutil等.
如果我使用以下内容:
a)定义合同
[ServiceContract]
public interface IMyContract
{
[OperationContract]
bool DoSomething(string something_in);
}
Run Code Online (Sandbox Code Playgroud)
b)编程一些代码
public class MySomething: IMyContract
{
public bool DoSomething(string something_in)
{
if(String.IsNullOrEmpty(something_in)
return false;
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
然后以编程方式托管它
Uri baseAddress = new Uri("net.tcp://localhost:48080/MySimpleService");
using (ServiceHost host = new ServiceHost(typeof(MyContract), baseAddress))
{
host.AddServiceEndpoint(typeof(IMyContract), new NetTcpBinding(), "");
host.Open();
Console.WriteLine("<Enter> to stop the service.");
Console.ReadLine();
host.Close();
Run Code Online (Sandbox Code Playgroud)
然后从另一个程序中消耗它:
var binding = new NetTcpBinding();
var endpoint = new EndpointAddress("net.tcp://localhost:48080/MySimpleService");
var channelFactory = new ChannelFactory<IMyContract>(binding, endpoint);
IMyContract client = null; …Run Code Online (Sandbox Code Playgroud) 我有一个第三方DOS进程,它将有关其进度的数据写入命令行.我想对进展做出反应.通常我会用一个Process带RedirectStandardOutput = true和RedirectStandardError = true再
.OutputDataReceived +=xyzOutputDataReceived;
.ErrorDataReceived += xyzErrorDataReceived;
.Start();
.BeginOutputReadLine();
.BeginErrorReadLine();
Run Code Online (Sandbox Code Playgroud)
通常这是有效的.我得到了我需要的DataReceivedEventArg.
在这种情况下,该过程似乎更新了它所写的相同行(这怎么可能?),因此它将15%,15%的更改写入18%,依此类推.只有在执行结束时,似乎才将数据刷新到StandardOutput.
此外,如果我只是尝试将数据传输到文本文件(例如odb.exe >> output.txt),它什么都不显示.
有没有办法获取临时数据?
问题不在于获得标准输出,这可以正常工作(同步和异步).它是关于如何从一个我无法改变的进程中获取输出,并且似乎没有将它的输出刷新到标准流.
我有以下情况:我想mutualy排除对象的访问.
到目前为止,我通常会使用锁定对象
object lockObject = new object();
...
method1: lock(lockObject) { CODE1 }
Run Code Online (Sandbox Code Playgroud)
现在我还有一个可以从另一个线程调用的方法.它不应该在未知的时间被阻止,而应该在规定的时间内给出答案.
在这种情况下,我会使用一个监视器,如
method2:
try{
Monitor.TryEnter(lockObject , 20000, ref lockTaken);
if (lockTaken) {CODE2}
}
catch(...){...}
finally
{
if (lockTaken) Monitor.Exit(timerLock);
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:如果lockobject是相同的并且彼此相互排斥,或者需要将每个锁更改为监视器,那么可以以这种方式锁定和监视混合.
那么两次相同的令牌都会被"锁定",或者监视器会为对象创建另一个令牌然后锁定吗?
瞥见我看不到aplication同时在两个代码中运行.但我不知道是否存在任何时序问题,其中CODE1和CODE2并行执行.
如果我有经典的方式注册和取消注册事件(+ = - =),还有一种方法可以查看是否立即注册了某些内容吗?
假设我有两种方法可以在一个Timer上注册.如果已经注册了某些内容.Elapsed,我不想要任何其他内容进行注册(并且不希望多次注册).
有没有办法查找当前注册的特定事件的方法?
这似乎是一个关于铸造的非常愚蠢的问题,但......
我有以下设置:
主类中有许多类派生.在某个时间点和空间,我得到一个项目,并希望将其作为子类的对象处理.
Asume:
class subClassA : mainclass
class subClassB : mainclass
Run Code Online (Sandbox Code Playgroud)
现在我有一些问题,问它是哪一堂课:
if(someObject is subClassA)
{
subClassA aA = someObject as subClassA ;
}
Run Code Online (Sandbox Code Playgroud)
虽然对于大多数子类,返回正确的对象,但我得到一个子类a null-Object.
如果我执行以下操作:
if(someObject is subClassA)
{
subClassA aA = someObject as subClassA ; // <- aA = null; someObject is shown in debugger as object of subClassA
object test = someObject as subClassA; // <- object is not null
// or
subClassA aB = (subClassA)someObject; // <- object is not null, shows the …Run Code Online (Sandbox Code Playgroud) 为什么以下代码有效?
呼叫:
SomeObject sO = null;
bool test = sO.TestNull();
Run Code Online (Sandbox Code Playgroud)
码:
public static bool TestNull(this SomeObject sO)
{
return sO == null;
}
Run Code Online (Sandbox Code Playgroud)
这是允许工作还是只是一个错误?
我想将BusinessObjects从一台PC转移到另一台PC.如果我想到大约40种不同的对象类型要转移,那么对于不同的对象使用许多合同似乎总是相同的任务有一些重载:"将对象A发送到计算机B并将对象保存到数据库"(对象都有持久的方法).
由于Objects可以有许多不同的类型,我只想使用泛型方法:
目前我正在考虑将类型作为eytra信息发送.然后我想做类似的事情:
BinaryFormatter aFormatter = new BinaryFormatter();
aFormatter.AssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple;
Object.ParseTypeFromString(aObjektType) aObject = aFormatter.Deserialize(stream) as Object.ParseTypeFromString(aObjektType);
Run Code Online (Sandbox Code Playgroud)
然后,只使用基础对象中的泛型方法将对象保存到数据库,以使传输类尽可能简单.
有没有可能做这样的事情?或者我是在一个完全错误的方向,用另一种方法更容易实现这个任务?
我记得有些类型的装饰器可以在调试时排除某些类.
原因:
有多个班级.如果调试器在调试期间跳转到另一个类(线程),那可能会很烦人.一些助手类应该是stepepd.
但我无法在任何地方找到这个装饰器.有没有人记得如何排除文件,以便调试器不会进入它?
我正在尝试使用带有.net 4.5的VS 2012中的Telerik OpenAccess的WCF Plain服务.
我尝试了telerik开发人员手册并创建了服务和客户端.
在我放的IEntitiesModel服务接口中
[OperationContract]
[FaultContract(typeof(string))]
PersistentDto ReadPersistentDto(string dtoKey);
Run Code Online (Sandbox Code Playgroud)
在方法的EntitiesModel.SVC中,我首先使用了一个简单的构造:
public PersistentDto ReadPersistentDto(string dtoKey)
{
throw new FaultException("test");
}
Run Code Online (Sandbox Code Playgroud)
在Consumer的用户代码中,我为异常设置了一个catch.
现在的问题是:
每次调用服务时,Visual Studio都会在"throw new FaultException"中停止并显示错误消息,即用户代码未处理FaultException.如果我继续使用F5,则异常也会被消费者的用户代码捕获.
为什么它会在服务中停止?
根据我的理解,FaultException应该传递给服务的使用者.
我该怎么做才能正确抛出FaultException?
我想我使用了一个相当普遍的模式:
var result = from a in AppDomain.CurrentDomain.GetAssemblies()
from t in a.GetTypes()
where t.IsDefined(typeof(TAttribute), inherit)
select t;
Run Code Online (Sandbox Code Playgroud)
如果我从Program.cs调用代码它是有效的.
此外,如果我从表格中调用它 - 有时,取决于表格.有时它只会抛出一个错误:Mindestens ein Typ in der Assembly kann nicht geladen werden.Rufen Sie die LoaderExceptions-Eigenschaft ab,wenn Sie weitereInformationenbenötigen.
在细节中有信息:
{ "模具Datei奥德大会\" 的EntityFramework,版本= 4.2.0.0,文化=中性公钥= b77a5c561934e089 \"奥得EINEAbhängigkeitdavon wurde nicht gefunden DAS系统卡恩死angegebene Datei nicht芬登. ":" 的EntityFramework,版本= 4.2 .0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089"}
这对我来说有点神奇.据我所知,我们不在任何地方使用EntityFramework,只有Telerik作为ER.
我在projekt目录中完成了"findstr/s/i/m entityframework . ".
Funilly,它在Sybase dll"SQL Anywhere 12\iAnywhere.Data.SQLAnywhere.v4.0.dll"中找到了它.
好吧 - 这似乎有点像sybase sql数据提供程序.但据我所知,我们不需要EntityFramework,项目也按预期工作.
我该如何解决这个问题?就像说:我想解析Appdomain,但不是一些第三方dll.或者有没有办法忽略错误?